2013-02-09 63 views
0

对于任何能够帮助我的人,我都会非常感激!将图形添加到运行时创建的组件

我有一个非常小的应用程序,它在运行时用LOOP创建了几个面板。目前要创建的面板的数量来自输入到文本框中的值,但最终将由从数据库中读取的整数确定。

每个面板都有一个标签,它创建在同一个循环中

我的问题是,我想画120行中的各个面板,因为它创建(在for循环每次迭代),而我这样做有嵌套WHILE循环

我可以得到的一切工作很好,面板正在创建标签标题,但出于某种原因,我无法绘制线条

这是所有测试的一种方法,任何人都可以帮助我吗?

我目前拥有的代码如下:

public void CreatePanels() 
{ 
    int PanelPosX = 50; 
    int PanelPosY = 500; 
    int LabelPosX = 10; 
    int LabelPosY = 10; 

    for (int i = 0; i < (Convert.ToInt32(textBox2.Text)); i++) 
    { 
     Panel pnlOverview = new Panel(); 
     pnlOverview.Name = "InspectorPanel" + i.ToString(); 
     pnlOverview.Text = "Inspector Panel " + i.ToString(); 
     pnlOverview.Location = new Point(PanelPosX, PanelPosY); 
     pnlOverview.Size = new Size(974, 136); 
     pnlOverview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
     Controls.Add(pnlOverview); 
     PanelPosY += 170; 

     Label lblInspectorName = new Label(); 
     lblInspectorName.Name = "InspectorName" + i.ToString(); 
     lblInspectorName.Text = " Inspector " + i.ToString(); 
     lblInspectorName.Width = 100; 
     lblInspectorName.Height = 13; 
     lblInspectorName.Location = new Point(LabelPosX, LabelPosY); 
     lblInspectorName.Size = new Size(974, 136); 
     pnlOverview.Controls.Add(lblInspectorName); 

     // Draw the Overview Chart 

     int x = 10; 
     int y = 0; 

     Pen OVTable = new Pen(Color.Black, 0); 

     while (y < 120) 
     { 
      Graphics mp = pnlOverview.CreateGraphics(); 
      mp.DrawLine(OVTable, x, 40, x, 100); 
      y++; 
      x += 8; 
     } 
    } 
    return; 
} 

感谢 伊万

回答

0

您可能需要创建一个空的图像,并吸引到它,然后把它添加到面板。另一种选择是从面板派生并重写OnPaint方法,此时您将绘制图表。

也许有一个C#图表组件会影响你的这个。

这是一个link MSDN参考渲染自定义控件,这就是你正在追求的。

相关问题