using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AIRS
{
///
/// Picturebox.xaml 的交互逻辑
///
public partial class Picturebox : UserControl
{
public Boolean st = false;
private Boolean ismove = false;
private Boolean isDown = false;
Point ptDown = new Point();
public String cir_rect = "";
public double zoom_key = 1;
public double rect_left = 0;
public double rect_top = 0;
public double _PixelWidth = 0;
public double _PixelHeight = 0;
public Boolean Frozen = false;
public string grade_value = "";
public Picturebox()
{
InitializeComponent();
}
private void btnanalysis_MouseMove(object sender, MouseEventArgs e)
{
if (!ismove)
{
btnanalysis.Width = btnanalysis.Width + 2;
btnanalysis.Height = btnanalysis.Height + 2;
btnanalysis.FontSize = 14;
ismove = !ismove;
}
}
private void btnanalysis_MouseLeave(object sender, MouseEventArgs e)
{
btnanalysis.Width = btnanalysis.Width - 2;
btnanalysis.Height = btnanalysis.Height - 2;
btnanalysis.FontSize = 13;
ismove = false;
}
private void cantest_MouseDown(object sender, MouseButtonEventArgs e)
{
if(Frozen==true)
{
return;
}
ptDown = e.GetPosition((IInputElement)sender);
if(cir_rect=="Circle")
{
double liner = Math.Pow(ptDown.X - circle.Center.X, 2.0) + Math.Pow(ptDown.Y - circle.Center.Y, 2.0);
if(liner>Math.Pow(circle.RadiusX,2.0))
{
return;
}
this.Cursor = System.Windows.Input.Cursors.Hand;
isDown = true;
}
else if(cir_rect=="Rectangle")
{
if(ptDown.X(rectrr.Rect.X+rectrr.Rect.Width) ||
ptDown.Y < rectrr.Rect.Y || ptDown.Y > (rectrr.Rect.Y + rectrr.Rect.Height))
{
return;
}
this.Cursor = System.Windows.Input.Cursors.Hand;
isDown = true;
}
}
private void cantest_MouseMove(object sender, MouseEventArgs e)
{
if (isDown)
{
if (cir_rect == "Circle")
{
this.Cursor = System.Windows.Input.Cursors.ScrollAll;
Point pt = e.GetPosition((IInputElement)sender);
double x = pt.X - ptDown.X;
double y = pt.Y - ptDown.Y;
Point ptm = circle.Center;
ptm.X = ptm.X + x;
ptm.Y = ptm.Y + y;
ptDown = new Point(ptDown.X + x, ptDown.Y + y);
circle.Center = new Point(circle.Center.X + x, circle.Center.Y + y);
//判断圆是否出图像
if ((circle.Center.X-circle.RadiusX) < rect_left)
{
circle.Center = new Point(circle.RadiusX + rect_left, circle.Center.Y);
}
if((circle.Center.Y - circle.RadiusY) < rect_top)
{
circle.Center = new Point(circle.Center.X, circle.RadiusY + rect_top);
}
if((circle.Center.X+circle.RadiusX)>(img.Width-rect_left))
{
circle.Center = new Point(img.Width - rect_left - circle.RadiusX, circle.Center.Y);
}
if ((circle.Center.Y + circle.RadiusY) > (img.Height - rect_top))
{
circle.Center = new Point(circle.Center.X, img.Height - rect_top - circle.RadiusY);
}
}
else if (cir_rect == "Rectangle")
{
this.Cursor = System.Windows.Input.Cursors.ScrollAll;
Point pt = e.GetPosition((IInputElement)sender);
double x = pt.X - ptDown.X;
double y = pt.Y - ptDown.Y;
Rect rtm = rectrr.Rect;
rtm.X = rtm.X + x;
rtm.Y = rtm.Y + y;
ptDown = new Point(ptDown.X + x, ptDown.Y + y);
rectrr.Rect = rtm;
if(rectrr.Rect.X (img.Width- rect_left))
{
rtm.X = img.Width - rect_left - rectrr.Rect.Width;
rectrr.Rect = rtm;
}
if ((rectrr.Rect.Y + rectrr.Rect.Height) > (img.Height - rect_top))
{
rtm.Y = img.Height - rect_top - rectrr.Rect.Height;
rectrr.Rect = rtm;
}
}
}
}
private void cantest_MouseUp(object sender, MouseButtonEventArgs e)
{
if (isDown)
{
isDown = false;
this.Cursor = System.Windows.Input.Cursors.Arrow;
}
}
private void cantest_MouseLeave(object sender, MouseEventArgs e)
{
if (isDown)
{
isDown = false;
this.Cursor = System.Windows.Input.Cursors.Arrow;
}
}
}
}