1
我創建了一個自定義控件並將其綁定到Form。我在控件中繪製圖形文本並添加到Form中。但它沒有顯示錶格。這是我的代碼。在Winforms中不顯示DrawString自定義控件文本C#
//創建一個自定義的控制
public class DrawTextImage : Control
{
public void DrawBox(PaintEventArgs e, Size size)
{
e.Graphics.Clear(Color.White);
int a = 0;
SolidBrush textColor = new SolidBrush(Color.Black);
using (SolidBrush brush = new SolidBrush(Color.Red))
{
e.Graphics.FillRectangle(brush, new Rectangle(a, a, size.Width, size.Height));
e.Graphics.DrawString("Text", Font, textColor, new PointF(50, 50));
}
}
}
//加載Form1中
public Form1()
{
InitializeComponent();
DrawTextImage call = new DrawTextImage();
call.Text = "TextControl";
call.Name = "TextContrl";
Size siz = new Size(200, 100);
call.Location = new Point(0, 0);
call.Visible = true;
call.Size = siz;
call.DrawBox(new PaintEventArgs(call.CreateGraphics(), call.ClientRectangle), siz);
this.Controls.Add(call);
}
任何幫助,我做了什麼錯?
現在你的控件只顯示一次文本。您應該在控件的「OnPaint」方法內執行繪圖部分。這是一個反覆出現的方法,就像電子遊戲的主循環一樣。 – raidensan
切勿使用'control.CreateGraphics'!切勿嘗試緩存'Graphics'對象!使用'Graphics g = Graphics.FromImage(bmp)'或者在控件的'Paint'事件中使用'e.Graphics'參數來繪製一個'Bitmap bmp'。 – TaW