private bool drag = false; //Making sure drag the object
private Point StartPoint;
private int RectangleWidth;
private int RectangleHeight;
private Point LastLocation;
private double CanvasLeft, CanvasTop;
private void Circle_MouseDown(object sender, MouseButtonEventArgs e)
{
try
{
RectangleSelected = (Image)sender;
drag = true;
Cursor = Cursors.Hand;
StartPoint = e.GetPosition(CanvasOuter);
LastLocation = new Point(selectedCircle.X, selectedCircle.Y);
Mouse.Capture((IInputElement)sender);
}
catch (Exception ex)
{
var methodName = new StackTrace(ex).GetFrame(0).GetMethod().Name;
Errorlog.Errorlog.WriteToErrorLog(ex.Message, ex.StackTrace, "Error", methodName);
}
}
private void Circle_MouseMove(object sender, MouseEventArgs e)
{
try
{
if (drag)
{
var newX = (StartPoint.X + (e.GetPosition(this).X - StartPoint.X));
var newY = (StartPoint.Y + (e.GetPosition(this).Y - StartPoint.Y));
Point offset = new Point((StartPoint.X - LastLocation.X), (StartPoint.Y - LastLocation.Y));
CanvasTop = newY - offset.Y;
CanvasLeft = newX - offset.X;
// check if the drag will pull the rectangle outside of it's host canvas before performing
// TODO: protect against lower limits too...
if ((CanvasTop + RectangleSelected.Height > CanvasOuter.Height) || (CanvasLeft + RectangleSelected.Width > CanvasOuter.Width) || CanvasTop < 0 || CanvasLeft < 0)
{
return;
}
RectangleSelected.SetValue(Canvas.TopProperty, CanvasTop);
RectangleSelected.SetValue(Canvas.LeftProperty, CanvasLeft);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Circle_MouseUp(object sender, MouseButtonEventArgs e)
{
drag = false;
Cursor = Cursors.Arrow;
Mouse.Capture(null);
}
No comments:
Post a Comment