5

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

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

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

4

2 回答 2

13

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

于 2012-05-29T13:41:20.963 回答
4

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

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

于 2012-05-29T13:48:33.630 回答