Windows DPI 设置会影响 Graphics.DrawString 函数。

6

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

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

备注:DPI设置似乎只影响文本。例如,更改DPI时,矩形的大小保持不变...

2个回答

16

我自己找到了解决方案: 关键是要使用GraphicsUnit.Pixel参数来创建字体。这样,绘制字符串就不会受系统DPI设置的影响。


1
你救了大家一命。 - James Westgate

4
您说得对,DPI仅影响以设备无关单位测量的可绘制项。字体通常以点为单位进行测量,其中1点= 1/72英寸。因此,10点字体在每个屏幕分辨率上的英寸大小都相同,并且将占用更多或更少的像素,具体取决于屏幕分辨率和像素密度。
所有以像素为单位测量的内容(如线条、形状等)都不会受到DPI的影响,但实际物理大小将根据屏幕分辨率和像素密度而变化。将代码更改为以像素测量字体确实会确保文本在所有屏幕DPI设置下具有相同的像素大小,但如果您要打印到打印机,则会发现文本大小取决于打印机分辨率。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接