C# 如何让屏幕上显示的内容与打印机上的内容大小一样

heavysnow 2016-11-17 05:04:44
我的一个C#程序,用的4.0框架。
我画了一个Image:
Image m_Img = new Bitmap(200, 200);
Graphics g = Graphics.FromImage(m_Img);
g.PageUnit = GraphicsUnit.Display;
g.DrawLine(new Pen(Color.Blue, 2.0F), new PointF(0.0F, 0.0F), new PointF(200.0F, 200.0F));
g.Save();
g.Dispose();
m_Img.Save(System.IO.Path.Combine(Application.StartupPath, "temp.jpg"));

那么这个Image显示在屏幕上也就是200px*200px了。

当我打印的时候,用的是自带的PrintDocument控件

private void printDocumentMain_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.PageUnit = GraphicsUnit.Display;
e.Graphics.DrawImage(m_Img, new PointF(0F, 0F));
}

我的这个Image是同时显示在屏幕上又要打印出来的,那么问题来了,打印的时候用的单位是百分之一英寸,显示的时候用的单位是像素,这个图像的大小就不好控制了。是否有一个像ppi参数那样,能将屏幕上的像素与英寸进行转换呢?可能有人会说,将单位全都设置成英寸或是milimeter不就可以了,可是当我画一个1mm的长度,在屏幕上又会显示多少像素呢?我对这个问题很不解,还望高手帮忙解答,在下在这里先谢谢了!!!
...全文
369 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-11-17
  • 打赏
  • 举报
回复
引用 楼主 heavysnowking 的回复:
是否有一个像ppi参数那样,能将屏幕上的像素与英寸进行转换呢?
引用 楼主 heavysnowking 的回复:
可是当我画一个1mm的长度,在屏幕上又会显示多少像素呢?
这两句都是疑问句吗?
xinweilee 2016-11-17
  • 打赏
  • 举报
回复
1*10/254*Graphics.DpiX/Dpi.Y 百度一下DPI,像素、英寸和毫米的转换
  • 打赏
  • 举报
回复
屏幕上看到的怎么都不可能跟像素对应吧,同样的图片,分辨率不同,大小也不同,所以你肯定要按实际长度做单位

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧