using
System;
using
System.ComponentModel;
using
System.Drawing;
using
System.Windows.Forms;
namespace
WellFormed
{
///
<summary>
/// Summary
description for GridSnap.
///
</summary>
public class
GridSnap : ScrollableControl
{
int
_snapX=8;
public
int SnapX
{
get{return
_snapX;}
set{_snapX=value;}
}
int
_snapY=8;
public
int SnapY
{
get{return
_snapY;}
set{_snapY=value;}
}
bool
_snap;
public
bool Snap
{
get{return
_snap;}
set{_snap=value;}
}
public
GridSnap()
{
}
protected
MouseEventArgs MouseSnap(MouseEventArgs e)
{
int
px, py;
if(_snap)
{
px=(int)(((float)e.X/_snapX)+0.5f)*_snapX;
py=(int)(((float)e.Y/_snapY)+0.5f)*_snapY;
}
else
{
px=e.X;
py=e.Y;
}
MouseEventArgs
t=new
MouseEventArgs(e.Button,e.Clicks,px,py,e.Delta);
return
t;
}
protected
override void
OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(this.MouseSnap(e));
}
protected
override void
OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(this.MouseSnap(e));
}
protected
override void
OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(this.MouseSnap(e));
}
}
}