C# 存储坐标时获取滚动偏移量
我正在制作一个表单,它通过鼠标点击来获取并绘制一个点。我对如何正确获取和添加滚动偏移量感到困惑,这样才能正确绘制点。例如,现在当我在左上角坐标为(0,0)的位置添加一个点时,该点会重新绘制自身并随着滚动动作移动,而不是停留在最初创建该点的位置。我已经准备好了C# 存储坐标时获取滚动偏移量,c#,C#,我正在制作一个表单,它通过鼠标点击来获取并绘制一个点。我对如何正确获取和添加滚动偏移量感到困惑,这样才能正确绘制点。例如,现在当我在左上角坐标为(0,0)的位置添加一个点时,该点会重新绘制自身并随着滚动动作移动,而不是停留在最初创建该点的位置。我已经准备好了 this.AutoScroll = true 并手动设置了最小尺寸 this.AutoScrollMinsSize = new Size(800,600); 以下是迄今为止我的鼠标单击事件的外观: if (e.Button == Mou
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();
}
使用AutoScrolOffset属性保留点所属位置而不是在滚动时移动点的正确方法是什么
我应该补充一点,当发生滚动事件时,我的程序也会覆盖滚动事件以重新绘制,以修复图形在离开可见区域后消失的问题。AutoScrolOffset不是正确的属性。它的用途非常有限,当使用ScrollControlIntoView()方法时,它可以对滚动位置应用偏移。这是非常罕见的,我自己从来没有用过 您需要改用AutoScrollPosition属性:
if (e.Button == MouseButtons.Left) {
var newPoint = new Point(e.X - this.AutoScrollPosition.X,
e.Y - this.AutoScrollPosition.Y);
// etc..
}
请注意,减法是必需的,有点不直观