我想创建一个bmp文件(在C#中),上面写有文字。这个bmp非常小(120 * 70),所需的字体大小为5.一旦我创建了这个bmp,文本就不可读了。有办法解决这个问题吗?
我已经使用过了
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
但没有运气
答案 0 :(得分:2)
成功的关键主要是所选的字体。这似乎达到了极限:
它使用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个像素添加一行,以便比较实际高度。)