Windows DPI设置会影响Graphics.DrawString

时间:2012-05-29 13:35:19

标签: c# gdi+ dpi drawstring

我创建了一个新的Bitmap对象,现在想要使用GDI +绘制一些文本。 所以我调用Graphics.DrawString(...)。

问题是字符串的大小取决于Windows 7的DPI设置。 有没有办法让我的文本绘图独立于Windows设置?

PS:DPI设置似乎只影响文本。例如,当更改DPI时,矩形会以相同的大小...

2 个答案:

答案 0 :(得分:9)

我自己找到了解决方案: 关键是使用参数GraphicsUnit.Pixel创建字体。这样绘制字符串就可以独立于系统的DPI设置。

答案 1 :(得分:4)

您的正确之处在于DPI仅影响在与设备无关的单位中测量的可绘制项目。字体通常以点测量,其中1点= 1/72英寸。因此,对于每个屏幕分辨率,10pt字体在INCHES中的大小将相同,并且将根据屏幕分辨率和像素密度占据更多或更少的像素。

以像素为单位测量的所有内容(如线条,形状等)都不会受到DPI的影响,但实际的物理尺寸会因屏幕分辨率和像素密度而异。更改代码以测量字体(以像素为单位)确实可以确保所有屏幕DPI设置上的文本都是相同的像素大小,但是如果要打印到打印机,您会发现文本大小会因打印机分辨率而异。 / p>