我正在尝试使用以下代码打印 WPF 窗口:
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
var printArea = printDialog.PrintQueue.GetPrintCapabilities()
.PageImageableArea;
var item = (FrameworkElement)this;
DrawingVisual visual = new DrawingVisual();
using (DrawingContext context = visual.RenderOpen())
{
VisualBrush brush = new VisualBrush(item);
context.DrawRectangle(brush, null,
new Rect(new Point(printArea.OriginWidth, printArea.OriginHeight),
new Size(item.ActualWidth, item.ActualHeight)));
}
printDialog.PrintVisual(visual, String.Empty);
}
它工作得非常好,但是由于一个非常奇怪的原因,按钮没有出现在打印的文档上。
我发现原因似乎是我在按钮上设置了 DropShadowEffect ,如果我删除它,按钮就会出现在打印的文档上:
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Color="Gray" Opacity=".50" ShadowDepth="8" />
</Setter.Value>
</Setter>
这不是一个真正的关键问题,但如果有人有解决方法会很好。