C#窗体里我用代码创建了一个groupbox控件,接着绘制了一个长方形,长方形不显示,这是为什么?
if (item.Key.ToString() == "编码控制器")
{
GroupBox groupbox = new GroupBox();
groupbox.Text = "编码控制器";
groupbox.Location = new Point(20, 20);
groupbox.Size = new Size(530, 200);
groupbox.BackColor = Color.Transparent;
this.Controls.Add(groupbox);
IList i_cc = item.Value;
for (int i = 0; i < i_cc.Count; i++)
{
System.DateTime curr_time = System.DateTime.Now;
string tt = curr_time.ToString();
Label label = new Label();
label.Text = tt;
label.Location = new Point(30 + 180 * i, 60);
label.Size = new Size(160, 20);
label.BackColor = Color.Transparent;
this.Controls.Add(label);
label.BringToFront();
string[] cc_arr = i_cc[i].ToString().Split(',');
//长方形
Graphics dc = this.CreateGraphics();
this.Show();
Pen blackPen = new Pen(Color.White, 2);
dc.DrawRectangle(blackPen, 30, 75, 180, 40); C# GDI
[解决办法]
代码不用药堆在一起啊,处理绘制的由paint处理,你说得根据数据绘制矩形传些变量过去不就行了吗
[解决办法]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private GroupBox groupbox;
private Graphics gc;
private int count;
private void Form1_Load(object sender, EventArgs e)
{
groupbox = new GroupBox();
groupbox.Text = "绘制正方形";
groupbox.Location = new Point(10, 10);
groupbox.Size = new Size(400, 300);
this.Controls.Add(groupbox);
//或者查询其他
count = int.Parse(ConfigurationManager.AppSettings["count"].ToString());
gc = groupbox.CreateGraphics();
groupbox.Paint += RenderRectangle;
}
private void RenderRectangle(object sender, PaintEventArgs e)
{
for (int i = 0; i < count; i++)
{
using (Pen blackPen = new Pen(Color.Black, 2))
{
gc.DrawRectangle(blackPen, 20 + i * 70, 20, 50, 50);
}
}
}
}