2012-05-29 50 views
5

我已经创建了一个新的Bitmap对象,现在想用GDI +绘制一些文本。 所以我调用Graphics.DrawString(...)。Windows DPI设置影响Graphics.DrawString

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

PS:DPI设置似乎只影响文本。例如,当改变DPI时,尺寸保持不变...

回答

9

刚刚找到了解决方案: 关键是使用参数GraphicsUnit.Pixel创建字体。这种绘制字符串的方式独立于系统的DPI设置。

4

你是正确的,因为DPI只影响在设备无关单元中测量的可绘制项目。字体通常以点数衡量,其中1点= 1/72英寸。因此,在每个屏幕分辨率下,10英寸字体在英寸中的大小将相同,并且将根据屏幕分辨率和像素密度占用更多或更少的像素。

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