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