【发布时间】:2012-05-29 21:48:33
【问题描述】:
我创建了一个新的位图对象,现在想使用 GDI+ 为它绘制一些文本。 所以我调用 Graphics.DrawString(...)。
问题在于字符串的大小取决于 Windows 7 的 DPI 设置。 有什么方法可以让我的文字绘图独立于 Windows 设置?
PS:DPI 设置似乎只影响文本。例如,在更改 DPI 时,矩形的大小相同...
【问题讨论】:
标签: c# gdi+ dpi drawstring
我创建了一个新的位图对象,现在想使用 GDI+ 为它绘制一些文本。 所以我调用 Graphics.DrawString(...)。
问题在于字符串的大小取决于 Windows 7 的 DPI 设置。 有什么方法可以让我的文字绘图独立于 Windows 设置?
PS:DPI 设置似乎只影响文本。例如,在更改 DPI 时,矩形的大小相同...
【问题讨论】:
标签: c# gdi+ dpi drawstring
刚刚自己找到了解决方案: 关键是使用参数 GraphicsUnit.Pixel 创建字体。这样,绘制字符串就可以独立于系统的 DPI 设置。
【讨论】:
您是正确的,因为 DPI 仅影响以与设备无关的单位测量的可绘制项目。字体通常以磅为单位,其中 1 磅 = 1/72 英寸。因此,10pt 字体在每个屏幕分辨率上的英寸大小都是相同的,并且会根据屏幕分辨率和像素密度占用或多或少的像素。
以像素为单位测量的所有内容(例如线条、形状等)都不会受到 DPI 的影响,但实际物理尺寸会因屏幕分辨率和像素密度而异。更改代码以像素为单位测量字体确实可以确保文本在所有屏幕 DPI 设置上的像素大小相同,但如果您要打印到打印机,您会发现文本大小会因打印机分辨率而异。
【讨论】: