1
 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 为空)。我究竟做错了什么?

(有问题的字体是固定宽度的,所以大小应该不是问题)

4

1 回答 1

1

DrawString工作正常,位图不是空的,你只是看不到文本,因为你是在黑色背景上用黑色画笔绘制的。

您需要初始化位图;使用g.Clear(Color.White). 另请注意,您正在与 混合TextRendererGraphics.DrawString这是一个坏主意。有关详细信息,请参阅DrawString 与 TextRenderer

如果您尝试比例字体,您将会对 W 和 M 的匹配方式感到失望,因为您只测量小写字母的尺寸c(在大多数字体中)会小于大写字母W

于 2016-08-09T21:04:47.687 回答