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 は null です)。私は何を間違っていますか?

(問題のフォントは固定幅なので、サイズは問題になりません)

4

1 に答える 1

1

DrawString正常に動作し、ビットマップは空ではありません。黒い背景に黒いブラシで描画しているため、テキストが表示されません。

ビットマップを初期化する必要があります。使用してg.Clear(Color.White)ください。TextRendererと混合していることにも注意してくださいGraphics.DrawString。これは悪い考えです。詳細については、 DrawString と TextRendererの比較を参照してください。

cプロポーショナル フォントを試してみると、(ほとんどのフォントで) 大文字よりも小さい小文字の寸法のみを測定しているため、 W と M がどのように収まるかがっかりするでしょうW

于 2016-08-09T21:04:47.687 に答える