Graphics 仅更新路径图形

Graphics 仅更新路径图形,graphics,c#-3.0,Graphics,C# 3.0,我使用下面的代码来画一条线,如下所示 private void Form1_Paint(object sender, PaintEventArgs e) { base.OnPaint(e); path = new GraphicsPath(new Point[]{ new Point(10, 10), new Point(100, 100) } ,

我使用下面的代码来画一条线,如下所示

        private void Form1_Paint(object sender, PaintEventArgs e)
    {
        base.OnPaint(e); 
        path = new GraphicsPath(new Point[]{ new Point(10, 10),
                                           new Point(100, 100)  }  ,
           new byte[] {(byte)PathPointType.Start,
                      (byte)PathPointType.Line });
        e.Graphics.DrawPath(Pens.Red, path);
    }
我需要在单击按钮时更改路径并重新绘制它,以便使用

private void button1_Click(object sender, EventArgs e)
    {


        for (int i = 0; i < path.PointCount; i++)
        {

            path.PathPoints[i].X += 100;
            path.PathPoints[i].Y += 100;


        }


         Invalidate();



        //path.

    }

问题没有发生任何效果,我不想首先刷新在其上绘制的容器,它不会给您任何效果,因为您总是在OnPaint中创建新路径。因此,您拥有相同的图片。为了更改它,您至少需要将路径创建移动到构造函数或其他初始化方法


第二,PathPoint是一个PointF数组,PointF是一个结构,因此它是不可变的,这样做不会在数组中获得新的点-PathPoints[i].X+=10

如何在构造函数中绘制,我的意思是什么与e等价。Graphics你不需要在构造函数中绘制,我说的是数据。在构造函数中初始化点数组,仅在OnPaint中绘制