2
私はこのエディタ(BPMNエディタ)を実行する必要があり、私は立ち往生しています。フォーム上にこのボタンがあり、イメージが表示されています。ボタンをクリックしてキャンバスをクリックします描画領域)をクリックしてボタンの画像を配置します。WinFormsのボタンを押してイメージを描画するには?
私はこのエディタ(BPMNエディタ)を実行する必要があり、私は立ち往生しています。フォーム上にこのボタンがあり、イメージが表示されています。ボタンをクリックしてキャンバスをクリックします描画領域)をクリックしてボタンの画像を配置します。WinFormsのボタンを押してイメージを描画するには?
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);
}
}
あなたは 'CreateGraphics'を使用して描画することはありません。それが返す 'Graphics'オブジェクトに描画するものは、永続的ではありません。つまり、ウィンドウが再描画されるたびに消えます。 'PictureBox'の' Paint'イベントを処理し、それが提供する 'e.Graphics'オブジェクトに描画する必要があります。 –
Navid、あなたはグラフィックスオブジェクトを処分していません。あなたはそこで 'using'を使うべきです。 –
@Cody Grey:私の投稿を編集する。 –