2013-10-05 65 views
0

我使用下面的代碼來設置窗體中的按鈕的漸變。它的作品,但它的文字沒有顯示。我該怎麼做才能解決它? 謝謝。爲什麼文本不能顯示漸變按鈕?

private void Form1_Load(object sender, EventArgs e) 
{ 
     button2.Paint += new PaintEventHandler(this.Button2_Paint); 
} 
private void Button2_Paint(object sender, PaintEventArgs e) 
{ 
     Graphics g = e.Graphics; 
     g.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(PointF.Empty, new PointF(button2.Width, button2.Height), Color.Pink, Color.Red), new RectangleF(PointF.Empty, button2.Size)); 
    } 

回答

0

這是因爲你從來沒有真正地繪製該文本。目前,您只能使用漸變填充按鈕的客戶端矩形,但內部沒有任何文本。爲了顯示與按鈕的文本字符串中,你需要添加一些更多的線路進行繪製方法:

private void Button2_Paint(object sender, PaintEventArgs e) 
{ 
    Button btn= (Button)sender; 
    Graphics g = e.Graphics; 
    g.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(PointF.Empty, new PointF(button2.Width, button2.Height), Color.Pink, Color.Red), new RectangleF(PointF.Empty, button2.Size)); 
    SizeF size = g.MeasureString(btn.Text, btn.Font); 
    PointF topLeft = new PointF(btn.Width/2 - size.Width/2, btn.Height/2 - size.Height/2); 
    g.DrawString(btn.Text, btn.Font, Brushes.Black, topLeft); 
    } 

這裏Graphics.MeasureString給你一個按鈕的Text屬性的寬度和高度,使用這些值正好在中間位置的文本的按鈕。而Graphics.DrawString只是用提供的顏色,字體和位置繪製字符串。

+0

謝謝親愛的Blablablaster。它非常棒... – John