我需要在包含4行和4列的窗体窗体上绘制线条网格。在窗体上绘制线条网格
回答
看一看:How to: Draw a Line on a Windows Form
如果你想要的东西来控制布局,而不是简单的网格线,您可以使用一个TableLayoutPanel。
作为对您的评论的回应,您可以使用TableLayoutPanel和锚定和对接来实现您想要的功能。还有FlowLayoutPanel,但要小心不要过度使用此控件,因为表单加载速度似乎受到影响。
需要成为线格 – burntsugar 2009-12-26 01:05:51
@burntsugar:线格只是多行,对吗?所以你需要做的是按照你所需的间距绘制水平和垂直线条。 – 2009-12-26 02:39:27
我希望能找到类似于java布局管理器的东西,但它似乎不存在于.NET库中。 – burntsugar 2009-12-27 00:54:27
我会重写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);
}
}
}
你想创建一个表来布置您的窗体上的控件或只是画一些线路? – 2009-12-26 02:18:47