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

Ňɏs*_*arp -2 vb.net graphics gdi+ bitmap

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

一方面,鉴于分辨率增加,它是有道理的,但另一方面,你认为字体会扩展.当在300 vs 96 dpi位图上测量时,MeasureString返回更大的尺寸,这实际上不是我所期望的.

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

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

感谢任何提示/建议!

Han*_*ant 6

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

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

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