我正在研究一种在鼠标单击时获取并绘制一个点的表单。我对如何正确获取和添加滚动偏移量以便正确绘制点感到困惑。例如,现在当我添加一个左上角坐标为 (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 事件以重新绘制,以解决离开可见区域后绘图消失的问题。