2009-12-26 182 views
2

我需要在包含4行和4列的窗体窗体上绘制线条网格。在窗体上绘制线条网格

+0

你想创建一个表来布置您的窗体上的控件或只是画一些线路? – 2009-12-26 02:18:47

回答

1

看一看:How to: Draw a Line on a Windows Form

如果你想要的东西来控制布局,而不是简单的网格线,您可以使用一个TableLayoutPanel

作为对您的评论的回应,您可以使用TableLayoutPanel和锚定和对接来实现您想要的功能。还有FlowLayoutPanel,但要小心不要过度使用此控件,因为表单加载速度似乎受到影响。

+0

需要成为线格 – burntsugar 2009-12-26 01:05:51

+0

@burntsugar:线格只是多行,对吗?所以你需要做的是按照你所需的间距绘制水平和垂直线条。 – 2009-12-26 02:39:27

+0

我希望能找到类似于java布局管理器的东西,但它似乎不存在于.NET库中。 – burntsugar 2009-12-27 00:54:27

-1

我会重写OnPaint方法并添加一些代码来在后台绘制线条。然后,在我完成绘图后,我想调用base.OnPaint让表单继续绘制窗体上可能存在的其他控件。这样,线条在背景中,不会被绘制在任何其他控件之上。此外,请确保添加graphics.clear()调用以避免屏幕撕裂效应。

也许你可以试试这个代码的变体:

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnPaint(PaintEventArgs e) 
     { 
      Pen linePen = new Pen(System.Drawing.Color.CornflowerBlue); 
      Graphics grphx = this.CreateGraphics(); 
      grphx.Clear(this.BackColor); 

      for(int i=1; i<5; i++) 
      { 
       //Draw verticle line 
       grphx.DrawLine(linePen, 
        (this.ClientSize.Width/4)*i, 
        0, 
        (this.ClientSize.Width/4) * i, 
        this.ClientSize.Height); 

       //Draw horizontal line 
       grphx.DrawLine(linePen, 
        0, 
        (this.ClientSize.Height/4) * i, 
        this.ClientSize.Width, 
        (this.ClientSize.Height/4) * i); 
      } 
      linePen.Dispose(); 

      //Continues the paint of other elements and controls 
      base.OnPaint(e); 
     } 
    } 
}