我有点困惑,因为我可以在我的 windows 窗体上显示每个字符串和每种字体,但作为图像并不总是可能的。也许我的代码有问题。但让我告诉你我在尝试什么。
起初我有这个:
Label l = new Label();
l.Text = "Ì CSharp Î";
this.Font = new Font("Code 128", 80);
l.Size = new System.Drawing.Size(300, 200);
this.Controls.Add(l);
this.Size = new Size(300, 200);
这很好。现在我想尝试使用与图像相同的字体保存相同的字符串。我找到了这段代码,我认为这就是如何做到这一点
private static Image DrawText(string text, Font font, Color textColor, Color backColor)
{
//first, create a dummy bitmap just to get a graphics object
Image img = new Bitmap(1, 1);
Graphics drawing = Graphics.FromImage(img);
//measure the string to see how big the image needs to be
SizeF textSize = drawing.MeasureString(text, font);
//free up the dummy image and old graphics object
img.Dispose();
drawing.Dispose();
//create a new image of the right size
img = new Bitmap((int)textSize.Width, (int)textSize.Height);
drawing = Graphics.FromImage(img);
//paint the background
drawing.Clear(backColor);
//create a brush for the text
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, 0, 0);
drawing.Save();
textBrush.Dispose();
drawing.Dispose();
return img;
}
var i = DrawText("Ì CSharp Î", new Font("Code 128", 40), Color.Black, Color.White);
如果我保存图像,我会得到:
我不明白。我使用与我在 Windows 窗体上使用的相同的字符串和相同的字体。为什么呢?以及如何避免这个问题?
PS:我使用的字体是在这里下载的,但我也用其他字体对其进行了测试,但它并不总是有效。