-4

我有一个创建大位图的应用程序,稍后用户可以添加一些标签。只要基本位图是默认的 96x96 分辨率,一切都很好。例如,如果我将其增加到 300,则使用 Graphics.DrawString 应用的文本太大了——8 或 10 的小字体显示为 20。

一方面,考虑到分辨率的提高,这是有道理的,但另一方面,你会认为字体会缩放。在 300 与 96 dpi 位图上测量时,MeasureString 返回更大的尺寸,这并不是我所期望的。

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

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

感谢您的任何提示/建议!

4

2 回答 2

6

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

问题是,您不是在 300 dpi 设备上显示它,而是在 96 dpi 设备上显示它。所以看起来要大很多。

显然,您并不真正想要 300 dpi 的位图。或者你想把它画小三倍。任你选。

于 2013-09-08T18:02:06.543 回答
0

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

于 2013-09-09T01:33:45.397 回答