【问题标题】:How to convert true type font to bitmap image?如何将真字体转换为位图图像?
【发布时间】:2014-02-03 17:47:52
【问题描述】:

我在尝试将具有特定字体样式的字符渲染到位图图像(黑白)时遇到了困难。我的问题是字体基本上是黑白的,我用黑色写字符(相对于白色背景),但是当我将它转换为位图图像时,我会在我的字符的装订处得到一个彩色的细轮廓。

谁能告诉我,当我用黑色写它时,灰色是从哪里来的?我怎样才能只得到黑白像素?

【问题讨论】:

  • 可能是抗锯齿:en.wikipedia.org/wiki/Spatial_anti-aliasing - 没有它看起来会很糟糕。
  • 我实际使用过,不起作用。我的问题是位图转换中的灰色从何而来。我期待得到纯黑白图像!
  • @user3266873 查看您使用的图形的TextRenderingHint 属性。改变它...

标签: c# image fonts bitmap


【解决方案1】:

不是全黑或全白的像素是抗锯齿的结果。默认情况下使用抗锯齿,因为不知道它的每个人都可能想要它。

我建议两种选择。一,使用每像素一位格式创建位图,这不会给抗锯齿机会。其次,您可以在逐像素绘制文本后浏览生成的图像,并根据阈值将每个像素调整为黑色或白色。 IE。如果图片比一半暗,则为黑色,否则为白色。例如if (red+green+blue > 383) set_pixel_white() else set_pixel_black();但是你需要为一些相当有趣的结果做好准备。您可能需要使用阈值。

PS 有一个更好的解决方案,您可以调整抗锯齿。 MSDN您将渲染设置为 System.Drawing.Text.TextRenderingHint.SingleBitPerPixel 或适合您的东西。

【讨论】:

  • 马丁,谢谢您的评论。你能给我一些关于如何做第一个选项的想法吗?
  • 位图构造函数可以为像素格式采用额外的参数。见MSDN,像素格式可以是Format1bppIndexedMSDN。这够了吗?
  • 最后一件事,你能不能给我一个例子说明如何使用它,因为我有一些问题?!非常感谢
  • 试试我添加到答案中的链接。 msdn.microsoft.com/en-us/library/ssazt6bs%28v=vs.110%29.aspx 有一个很好的例子。
  • 对我来说 2 种颜色的最佳结果是使用 drawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
猜你喜欢
  • 2012-03-11
  • 2014-01-26
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多