マウスクリックでポイントを取得して描画するフォームに取り組んでいます。ポイントを正しく描画できるように、スクロールオフセットを適切に取得して追加する方法について混乱しています。たとえば、現在、左上の座標が (0,0) であるポイントを追加すると、ポイントが最初に作成された場所にとどまるのではなく、ポイント自体が再描画され、スクロール アクションで移動します。設定しました
this.AutoScroll = true
最小サイズを手動で設定しました
this.AutoScrollMinsSize = new Size(800,600);
これまでのマウスクリックイベントは次のようになります。
if (e.Button == MouseButtons.Left)
{
Point newPoint = new Point(e.X, e.Y);
p.X += this.AutoScrollOffset.X;
p.Y += this.AutoScrollOffset.Y;
this.Invalidate();
}
AutoScrollOffset プロパティを使用して、スクロール時にポイントを移動するのではなく、それらが属するポイントを保持する適切な方法は何ですか?
私のプログラムは、Scroll イベントが発生したときに再描画するように Scroll イベントをオーバーライドして、表示領域を離れると描画が消えるという問題を修正することも追加する必要があります。