C# WPF中虚线的打印是否错误?
根据打印机的分辨率,虚线具有不同的虚线计数。为什么它不独立于新闻部?我怎样才能修好它C# WPF中虚线的打印是否错误?,c#,wpf,printing,lines,C#,Wpf,Printing,Lines,根据打印机的分辨率,虚线具有不同的虚线计数。为什么它不独立于新闻部?我怎样才能修好它 var line = new Line(); line.Stroke = Brushes.Black; line.StrokeThickness = 1; line.X1 = line.Y1 = 100; line.X2 = line.Y2 = 200; line.StrokeDashArray = new DoubleCollection(new[] { 8.0 }); var dialog = new P
var line = new Line();
line.Stroke = Brushes.Black;
line.StrokeThickness = 1;
line.X1 = line.Y1 = 100;
line.X2 = line.Y2 = 200;
line.StrokeDashArray = new DoubleCollection(new[] { 8.0 });
var dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
Size pageSize = new Size(
dialog.PrintableAreaWidth, dialog.PrintableAreaHeight);
line.Measure(pageSize);
line.Arrange(new Rect(0, 0, pageSize.Width, pageSize.Height));
dialog.PrintVisual(line, "description");
}
我已经使用了PrintVisual,但是您可以创建带有虚线的固定文档并使用PrintDocument。结果是一样的。WPF天生对DPI的变化有响应,几乎每个控件(除非另有规定)都是矢量图形-我希望您的打印机足够聪明,能够解释这些矢量图形,而不是打印屏幕上的转储内容 根据我使用WPF的经验,至少有两种选择: 选项1-创建位图并打印它
您可以将WPF控件捕获为位图对象,而位图对象将完全不知道DPI的使用情况,然后将其作为常规打印。值得注意的是,生成的位图将根据生成系统的显示分辨率/缩放比例而有所不同&任何要捕获为位图的内容都必须在屏幕上可见(而不是在滚动框等屏幕外) 选项2-使您的应用程序DPI不受影响 您可能不想使用此选项,因为它会阻止在高分辨率显示器上缩放(可能有一种方法可以暂时实现这一点,只是为了打印,但是您的打印机可能会忽略此选项,因为它更像是一个用户界面的东西,我目前无法测试它),但它们都在一起
我不完全确定这些选项是否有效,因为我目前无法测试它们。如果可以的话,我会把这篇文章作为评论发表。祝你好运 我对为什么如此感兴趣:)关于选项1,我不能使用此建议,因为我将向量图形保存在FixedDocument中,然后作为XPS文件保存。对于任何页面大小,文件大小要更小,打印质量要相同,这一点很重要。关于选项2这种方式不适合我。对于选项1,您应该能够将位图插入到固定的文档中。我很好奇为什么选项2不适合你,如果你还不清楚为什么WPF应用程序首先是DPI响应的。由于人们使用的屏幕尺寸/分辨率范围很大,因此它们的响应速度很快。理论上,任何WPF应用程序在任何显示器上都应该看起来清晰、缩放正确。