在窗体上绘制一个线网格

时间:2009-12-26 00:58:56

标签: vb.net drawing

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

2 个答案:

答案 0 :(得分:1)

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

如果您想要控制布局而不是简单的线条网格,可以使用TableLayoutPanel

在回复您的评论时,您可以使用TableLayoutPanel以及锚定和停靠来实现您想要的效果。还有FlowLayoutPanel,但要注意不要过度使用此控件,因为表单加载速度似乎受到影响。

答案 1 :(得分:-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);
        }
    }
}