具有相对较小字体的图像上的DrawString

时间:2015-03-28 05:26:32

标签: c# fonts bitmap

我想创建一个bmp文件(在C#中),上面写有文字。这个bmp非常小(120 * 70),所需的字体大小为5.一旦我创建了这个bmp,文本就不可读了。有办法解决这个问题吗?

我已经使用过了

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

但没有运气

1 个答案:

答案 0 :(得分:2)

成功的关键主要是所选的字体。这似乎达到了极限:

enter image description here

它使用smallest-pixel-7 font并像这样写入位图:

string testText = "The quick brown fox <_>°|^ 123456789-0!";

using (Graphics G = Graphics.FromImage(bmp0))
using (Font font = new Font("Smallest Pixel-7", 10f))
{
    G.TextContrast = 0;
    G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
    G.DrawString(testText, font, Brushes.Black, new Point(20, 20));
}

大多数字符都适合5像素高度,有些字符使用第6像素行,例如Q&#39; Q&#39;我想第7行是为了领先..

注意它是全部大写并且看他们的许可证! (还应该有一个免费软件字体......就像here}

在我的测试中AntiAliasGridFit是最好的选择,比AntiAlias好得多:

  

使用其抗锯齿字形位图绘制每个字符   提示。由于抗锯齿效果好得多,但效果更好   性能成本。

注2:位图的dpi分辨率与必要的字体大小直接相关。在第一个例子中,使用72dpi。如果增加分辨率,可以减小字体大小。

bmp0.SetResolution(150, 150);

以下示例使用72dpi和9.6pt的字体大小。

以下是各种其他字体的选择;如果你不能阅读你不想使用的字体系列; - )

(我每隔5个像素添加一行,以便比较实际高度。)

enter image description here