2010-11-22 15 views
2

私はこのエディタ(BPMNエディタ)を実行する必要があり、私は立ち往生しています。フォーム上にこのボタンがあり、イメージが表示されています。ボタンをクリックしてキャンバスをクリックします描画領域)をクリックしてボタンの画像を配置します。WinFormsのボタンを押してイメージを描画するには?

答えて

3
public class Shape 
{ 
    public float X { get; set; } 
    public float Y { get; set; } 
    public Image Image { get; set; } 
} 

やコード:

private string _currentTool; 
    private readonly List<Shape> _shapes; 

    private void Button1Click(object sender, EventArgs e) 
    { 
     _currentTool = "img"; 
    } 

    private void PictureBox1MouseDown(object sender, MouseEventArgs e) 
    { 
     switch (_currentTool) 
     { 
      case "img": 
       _shapes.Add(new Shape {Image = button1.Image, X = e.X, Y = e.Y}); 
       pictureBox1.Invalidate(); 
       break; 
     } 
    } 

    private void PictureBox1Paint(object sender, PaintEventArgs e) 
    { 
     foreach (var shape in _shapes) 
     { 
      e.Graphics.DrawImage(shape.Image, shape.X, shape.Y); 
     } 
    } 
+1

あなたは 'CreateGraphics'を使用して描画することはありません。それが返す 'Graphics'オブジェクトに描画するものは、永続的ではありません。つまり、ウィンドウが再描画されるたびに消えます。 'PictureBox'の' Paint'イベントを処理し、それが提供する 'e.Graphics'オブジェクトに描画する必要があります。 –

+0

Navid、あなたはグラフィックスオブジェクトを処分していません。あなたはそこで 'using'を使うべきです。 –

+0

@Cody Grey:私の投稿を編集する。 –

関連する問題