打印像素毫米相互转换

这种方法相互转换时,会有小数点精度缺失,但是结果符合打印机纸张设定里的尺寸。

1.像素转毫米

PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = 打印机名称;
var paperSize = printDoc.PrinterSettings.PaperSizes[0];//获取打印机纸张

Graphics currentGraphics = Graphics.FromHwnd(IntPtr.Zero);
float widthMM = (paperSize.Width / (int)currentGraphics.DpiX) * 25.4F;//得出毫米

2.毫米转像素

System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(IntPtr.Zero);
IntPtr hdc = g.GetHdc();
int width = GetDeviceCaps(hdc, 4);     // HORZRES
int pixels = GetDeviceCaps(hdc, 8);     // BITSPIXEL
g.ReleaseHdc(hdc);
return (((double)pixels / (double)width) * (double)length);

 

posted @ 2021-11-26 12:56  烟台西炮台  阅读(484)  评论(0编辑  收藏  举报