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