【发布时间】:2015-06-26 00:08:39
【问题描述】:
以下代码
var fnt = new Font("Consolas", 12, FontStyle.Regular);
var bmp = new Bitmap(24, 24);
using (var grp = Graphics.FromImage(bmp))
{
var size = grp.MeasureString(shortName, fnt, new SizeF(24, 24),
new StringFormat(StringFormatFlags.NoFontFallback | StringFormatFlags.NoWrap |
StringFormatFlags.FitBlackBox));
grp.TranslateTransform(0, (bmp.Height - size.Height) / 2);
grp.DrawString("DW", fnt, Color.FromArgb(0xff, 0x33, 0x66, 0x33),
new RectangleF(0, 0, 24, 24),
new StringFormat(StringFormatFlags.NoFontFallback |
StringFormatFlags.NoWrap | StringFormatFlags.FitBlackBox));
grp.TranslateTransform(0, (size.Height - bmp.Height) / 2);
}
bmp.Save(string.Format("d:\\out-{0}.bmp", shortName));
给出的输出看起来像,看起来不太好(放大后你可以看到边框上有黑点)。如果将上面的画笔更改为Brushes.Black,我们会得到,这更好,但它太粗了(注意我将字体样式设置为“常规”)。
但是我可以手动实现 之类的东西,它既清晰又纤薄。那是使用 GIMP 创建的,在透明画布上具有相同的字体系列、字体大小和颜色。
所以我想知道如何以编程方式使用 GDI+ 做同样的事情?
【问题讨论】: