2013-08-24 106 views
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爲空)。我究竟做錯了什麼?DrawString()似乎不起作用

(有問題的字體是固定寬度,所以大小不應是一個問題),因爲你是畫

+1

這種問題可以使用斷點快速解決。它是否進入了你的使用塊? – Arash

+7

它不是空的,你只是看不到它。您正在黑色背景上繪製黑色筆刷。你至少需要初始化位圖,使用g.Clear(Color.White)。另外請注意,你正在將TextRenderer與Graphics混合使用,不好主意。你將會對W和M如何適應感到失望。 –

+0

是的,它確實... –

回答

0

DrawString正常工作和位圖是不是空的,你就不能看到的文本與黑色背景上的黑色畫筆。

您需要初始化位圖;使用g.Clear(Color.White)。另外請注意,你在混合TextRendererGraphics.DrawString,這是一個壞主意。有關更多信息,請參閱DrawString vs. TextRenderer

如果你嘗試使用比例字體,你將會失望W和M如何適合,因爲你只測量小寫字母c的尺寸,其中大多數字體的尺寸小於大寫字母W

+0

標記爲社區維基,因爲所有用於回答此問題的信用都發布到@Hans Passant – ventiseis