2011-09-13 34 views
0

我用下面的代码绘制线条如下更新pathgraphic只有

 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. 

    } 

问题没有效果发生了,我不想刷新我绘制的容器

回答

0

首先,由于您总是在OnPaint中创建一个新路径,所以不会产生任何效果。因此你有相同的图片。为了改变它,你需要至少你的路径创建移动到构造函数或其他初始化方法

其次,PathPointPointF数组,PointF是一个结构,因此它是不可变的,你不会得到一个新的起点通过这样做 - PathPoints[i].X += 10

+0

如何在构造函数中绘制我的意思是什么是e.Graphics – AMH

+0

您不需要在构造函数中绘制,我正在谈论数据。在构造函数中初始化您的点数组,仅在OnPaint中绘制 – username