早教吧 育儿知识 作业答案 考试题库 百科 知识分享

winform怎样通过代码在两点之间画线?知道一个函数:this.Paint+=newPaintEventHandler(form1Paint);但这个函数得写在FormLoaded外面,由于要画的变量在Formloaded内有没有其他函数可以实现画线publicpartia

题目详情
winform怎样通过代码在两点之间画线?
知道一个函数:this.Paint += new PaintEventHandler(form1_Paint);
但这个函数得写在 Form_Loaded外面,由于要画的变量在Form_loaded内
有没有其他函数可以实现画线
public partial class Form1 :Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{ ...
this.Paint += new PaintEventHandler(form1_Paint);
...
怎样这里画线?
}
public void form1_Paint(Object sender,PaintEventArgs e)
{
Pen blackPen = new Pen(Color.Black,2);
Point point1 = new Point(100,100);
Point point2 = new Point(500,100);
e.Graphics.DrawLine(blackPen,point1,point2);
}
}
▼优质解答
答案和解析
public partial class Form1 : Form
    {
        Point point1=Point.Empty;
        Point point2=Point.Empty;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ...
            point1 = new Point(100, 100);
            point2 = new Point(500, 100);
            this.Paint += new PaintEventHandler(form1_Paint);
        }

        public void form1_Paint(Object sender, PaintEventArgs e)
        {
            if(point1==Point.Empty || point2==Point.Empty) return;
            Pen blackPen = new Pen(Color.Black, 2);    
            e.Graphics.DrawLine(blackPen, point1, point2);      
           }
           
         private void button1_Click(object sender, EventArgs e)
         {
             //画一条新的连线
             point1 = new Point(200, 200);
             this.Invalidate();
         }
         
                private void button2_Click(object sender, EventArgs e)
         {
             //"擦出"连接线
             point1 = Point.Empty
             this.Invalidate();
         }
    }
稍微修改一下:将两个点point1和point2作为类变量,只要修改这两个变量,就可以画出相应的连线了.