我有一个创建大位图的应用程序,之后用户可以添加一些标签。只要基本位图是默认的96x96分辨率,一切都很好。例如,如果我将它提升到300,那么使用Graphics.DrawString应用的文本太大了 - 小尺寸的8或10字体显示就像是20。
一方面,考虑到分辨率的提高,它是有意义的,但另一方面,你认为字体会扩展。在300 vs 96 dpi位图上测量时,MeasureString会返回更大的尺寸,这实际上并不是我的预期。
我尝试通过创建适当大小的小位图,打印到它,然后将其粘贴到主图像来欺骗它。但是当粘贴到高分辨率时,它会放大粘贴的图像。
我能想到的另一件事是创建一个高分辨率临时位图,打印到它,然后在粘贴到主图像之前缩小它。这似乎还有很长的路要走。是否有允许这样的合成或叠加类型设置?字体大小仅适用于96 dpi画布吗?
感谢任何提示/建议!
答案 0 :(得分:6)
字体的大小以英寸表示。一点是1/72英寸。因此,如果您绘制到每英寸300点的位图,那么您的字体将使用更多的点来获得所需的英寸数。因此,当您在300 dpi显示器上显示时,您将获得所要求的英寸尺寸。
问题是,您没有将它显示为300 dpi设备,而是在96 dpi设备上显示它。所以它看起来更大。
显然,你真的不想要一个300 dpi的位图。或者你想要画三倍小。随便挑选。
答案 1 :(得分:0)
如果您想要一致的像素大小,请在创建Font对象时指定UnitPixel。