注意:this.AutoScrollPosition赋值时,会自动对x,y值取反。
#region "鼠标中键移动画布"
bool mouseDownState = false;
Point scrollPositionOldPoint = new Point();
Point mouseHitOldPoint = new Point();
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button != MouseButtons.Middle)
{
return;
}
mouseHitOldPoint = e.Location;
scrollPositionOldPoint = new Point(Math.Abs(this.AutoScrollPosition.X), Math.Abs(this.AutoScrollPosition.Y));
this.Cursor = Cursors.Hand;
mouseDownState = true;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (!mouseDownState)
{
return;
}
int x = e.Location.X - mouseHitOldPoint.X;
int y = e.Location.Y - mouseHitOldPoint.Y;
//注意:this.AutoScrollPosition赋值时,会自动对x,y值取反。
this.AutoScrollPosition = new Point(scrollPositionOldPoint.X - x, scrollPositionOldPoint.Y - y);
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
this.Cursor = DefaultCursor;
mouseDownState = false;
}
#endregion