2011-09-13 7 views
0

私は、パスを変更するにはボタンをクリックして、だけなので、それを再描画するとき、私は問題なし更新pathgraphicのみ

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. 

    } 

を使用する必要がある

 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); 
    } 

を次のように線を引くには、次のコードを使用します効果が発生しました。私はそれに描画するコンテナをリフレッシュしたくありません。

答えて

0

OnPaintに常に新しいパスを作成するため、最初は効果がありません。その結果、あなたは同じ絵を持っています。コンストラクタまたは別の初期化メソッド

第二に、あなたのパスの作成を動かすあなたは少なくとも必要それを変更するためには、PathPointPointFの配列があり、PointFは、構造体であるので、それは不変であり、あなたが新しいポイントを得ることはありません配列でそれを行うことによって - PathPoints[i].X += 10

+0

どのようにコンストラクタを描画する私はe.Graphics – AMH

+0

に相当するものを意味するコンストラクタを描画する必要はありません、私はデータについて話していた。コンストラクタ内のポイントの配列を初期化し、OnPaintでのみ描画します – username

関連する問題