private static Bitmap[] renders = new Bitmap[characters];
public static void initBitmaps()
{
fontWidth = TextRenderer.MeasureText("c", font).Width;
fontHeight = TextRenderer.MeasureText("c", font).Height;
for (int i=0; i<characters; i++)
{
renders[i] = new Bitmap(fontWidth, fontHeight);
using (Graphics g = Graphics.FromImage(renders[i]))
{
g.DrawString(Convert.ToChar(i + 32).ToString(), font, new SolidBrush(Color.Black), new PointF(0, 0));
}
}
}
执行这段代码后,所有位图都是空的(RawData 为空(。我做错了什么?
(有问题的字体是固定宽度的,所以大小应该不是问题(
DrawString
工作正常,位图不为空,您只是看不到文本,因为您是在黑色背景上使用黑色画笔绘制的。
您需要初始化位图;请使用 g.Clear(Color.White)
。另请注意,您将TextRenderer
与Graphics.DrawString
混合在一起,这是一个坏主意。有关详细信息,请参阅 DrawString vs. TextRenderer。
如果您尝试比例字体,您会对 W 和 M 的适应方式感到失望,因为您只测量小写c
的尺寸(在大多数字体中(会小于大写W
。