2011-09-13 35 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