具有高分辨率位图的Graphics.DrawString == LARGE TEXT

时间:2013-09-08 17:43:21

标签: vb.net graphics bitmap gdi+

我有一个创建大位图的应用程序,之后用户可以添加一些标签。只要基本位图是默认的96x96分辨率,一切都很好。例如,如果我将它提升到300,那么使用Graphics.DrawString应用的文本太大了 - 小尺寸的8或10字体显示就像是20。

一方面,考虑到分辨率的提高,它是有意义的,但另一方面,你认为字体会扩展。在300 vs 96 dpi位图上测量时,MeasureString会返回更大的尺寸,这实际上并不是我的预期。

我尝试通过创建适当大小的小位图,打印到它,然后将其粘贴到主图像来欺骗它。但是当粘贴到高分辨率时,它会放大粘贴的图像。

我能想到的另一件事是创建一个高分辨率临时位图,打印到它,然后在粘贴到主图像之前缩小它。这似乎还有很长的路要走。是否有允许这样的合成或叠加类型设置?字体大小仅适用于96 dpi画布吗?

感谢任何提示/建议!

2 个答案:

答案 0 :(得分:6)

字体的大小以英寸表示。一点是1/72英寸。因此,如果您绘制到每英寸300点的位图,那么您的字体将使用更多的点来获得所需的英寸数。因此,当您在300 dpi显示器上显示时,您将获得所要求的英寸尺寸。

问题是,您没有将它显示为300 dpi设备,而是在96 dpi设备上显示它。所以它看起来更大。

显然,你真的不想要一个300 dpi的位图。或者你想要画三倍小。随便挑选。

答案 1 :(得分:0)

如果您想要一致的像素大小,请在创建Font对象时指定UnitPixel。