【问题标题】:Graphics.DrawString with high resolution bitmaps == LARGE TEXT具有高分辨率位图的 Graphics.DrawString == LARGE TEXT
【发布时间】:2013-09-12 06:18:10
【问题描述】:

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

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

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

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

感谢任何提示/建议!

【问题讨论】:

    标签: vb.net graphics bitmap gdi+


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-12-23
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        • 2011-04-07
        • 1970-01-01
        • 2014-11-20
        相关资源
        最近更新 更多