如何将实心字符串绘制到位图

How to draw solid strings to a bitmap

以下代码

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,我们会得到 ,这更好,但它太粗了(注意我将字体样式设置为 "regular")。

但是我可以手动实现类似的东西,它清晰而简洁。那个是使用 GIMP 创建的,在透明 canvas.

上具有相同的字体系列、字体大小和颜色

所以我想知道如何以编程方式使用 GDI+ 做同样的事情?

重复?? Font is very ugly

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