mousemoveイベントで図形の周りに図形をドラッグしようとしていますが、スムーズに動かせようと苦労しています。画像ボックスには背景としてロードされた画像があり、マウスをクリックしてドラッグしたときに画像の上に円をドラッグするようにグラフィックオブジェクトを希望します。ビットマップの上にグラフィックスオブジェクトをドラッグする
マウスを移動して画像ボックスを再読み込みするたびに元の画像のクローンを作成していますが、これを実現するにはより良い方法でなければならないようです。
グラフィックスが追加されるたびに元のビットマップを再ロードせずに、ペイントアプリケーションのような軌跡を作成します。
イメージ全体を再読み込みせずに以前の図面をクリアするにはどうすればよいですか?どんな助けもありがたい。
private void picCanvas_MouseMove(object sender, MouseEventArgs e)
{
if (_drag)
{
picCanvas.Image = (Bitmap)_original.Clone();
Graphics g = Graphics.FromImage((Bitmap)picCanvas.Image);
g.DrawEllipse(_whitePen, e.X, e.Y, 10, 10);
picCanvas.Invalidate();
}
}
private void picCanvas_MouseDown(object sender, MouseEventArgs e)
{
_drag = true;
}
private void picCanvas_MouseUp(object sender, MouseEventArgs e)
{
_drag = false;
}
のおかげで、このサンプルでは、その後リフレッシュ
が発生します。私はわずかな変更を加える必要がありました。なぜなら、ペイントイベントはtrueの "_drag"値を受け取ったようには見えなかったので、決して描くことはできませんでした。 – fluent
グラフィックスオブジェクトの行を追加するのを忘れました。編集したコードをご覧ください。 – honibis
これはさらに優れています。どうもありがとう。私はまだ描画後にpicCanvas.Invalidateを呼び出す必要があります。そうしないと、描画が画面に表示されるようです。 – fluent