WPF中的打印速度超过96 dpi

WPF中的打印速度超过96 dpi,wpf,printing,resolution,dpi,printer-properties,Wpf,Printing,Resolution,Dpi,Printer Properties,让我解释一下问题,我陷入了困境 如果我从虚拟打印机(如PDF Creator)或任何允许更改此设置的打印机的打印首选项对话框中更改dpi设置,然后设置断点,如以下代码所示: PrintDialog printDialog = new PrintDialog(); if ((bool)printDialog.ShowDialog().GetValueOrDefault()) { System.Printing.PrintCapabilities

让我解释一下问题,我陷入了困境

如果我从虚拟打印机(如PDF Creator)或任何允许更改此设置的打印机的打印首选项对话框中更改dpi设置,然后设置断点,如以下代码所示:

    PrintDialog printDialog = new PrintDialog(); 
    if ((bool)printDialog.ShowDialog().GetValueOrDefault())
    {

            System.Printing.PrintCapabilities capabilities =  printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
           ...... insert breakpoint here 
     }
我可以看到属性printDialog.PrintTicket.PageResolution.X;和printDialog.PrintTicket.PageResolution.Y正确更改,而printDialog.PrintTicket.PageMediaSize.Width和printDialog.PrintTicket.PageMediaSize.Height则不会更改,尽管打印机分辨率更改。。。纵向模式下的A4纸张将始终具有PageMediaSize.Height=1122.5196850393702和PageMediaSize.Width=793.70078740157476,无论之前设置了哪种分辨率。。。。。对于WPF,这些尺寸的单位大小设置为1/96英寸,但当屏幕上的默认屏幕分辨率为96 dpi时,打印机上的默认屏幕分辨率是错误的,因为它具有不同的分辨率,换句话说,如果我找不到方法告诉WPF打印机的单位大小不是1/96英寸,但例如1/300英寸(如果在我之前设置为300 dpi的打印机上),则无法以高于96 dpi的分辨率打印,则会混淆纸张的高度和宽度是只读属性

最后一句话,在我的特定情况下,我无法使用RenderTargetBitmap然后调整全部大小以匹配打印机的纸张高度和宽度设置,因为我正在打印高清晰度条形码图像,这将导致图像重新缩放,使条形码在最终纸张上无法读取,因为我创建它的目的是以300dpi的分辨率打印如果不调整大小,将导致超出范围,因为WPF告诉我打印机纸张尺寸的单位大小(1/96英寸)错误,尽管打印机上以前设置了实际DPI

希望把问题弄清楚

提前感谢,


Dave

复制问题的提示是,使用PrintVisual或PrintDocument方法进行打印,之前在PrintDialog中设置了不同的打印机分辨率,输出将始终是相同的,我已经解决了直接将条形码绘制为一组黑白线,从源位数组开始,利用WPF的矢量功能