123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- 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;
- using DAL;
- using System.Data;
- using System.Data.SqlClient;
- using ColorFont;
- namespace AGV_WPF
- {
- /// <summary>
- /// MarkManage.xaml 的交互逻辑
- /// </summary>
- public partial class MarkManage : Page
- {
- public DAL.ZSql sql = new DAL.ZSql();
- public SolidColorBrush IsVirtualMark = Brushes.OrangeRed;
- public SolidColorBrush NotVirtualMark = Brushes.Yellow;
- public int id = -1;
- public bool IsQuickAdd = false;
- public bool IsQuickGet = false;
- public double MarkDiameter = 4;
- public Ellipse SelectedMark = new Ellipse();
- public List<Ellipse> pointList = new List<Ellipse>();
- public List<Label> pointLableList = new List<Label>();
- public MarkManage()
- {
- InitializeComponent();
- SelectedMark.Height = MarkDiameter * 2;
- SelectedMark.Width = MarkDiameter * 2;
- SelectedMark.Fill = Brushes.Brown;
- canvas.Children.Add(SelectedMark);
- }
- /// <summary>
- /// 页面加载
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Page_Loaded(object sender, RoutedEventArgs e)
- {
- MapInit(@"Image\background.png");
- IsVirtualMark = new SolidColorBrush(Properties.Settings.Default.MarkVirtualColor);
- NotVirtualMark = new SolidColorBrush(Properties.Settings.Default.MarkNotColor);
- MarkDiameter = Properties.Settings.Default.MarkDiameter;
- EVirtualMark.Fill = IsVirtualMark;
- ENotVirtualMark.Fill = NotVirtualMark;
- LoadData();
- }
- void AddEllipse(int id,double x,double y,int mark,int workLine,bool isVirtual)
- {
- var values = from s in pointList where s.Tag.ToString() == id.ToString() select s;
- if (values.Count() == 0)
- {
- Ellipse markellipse = new Ellipse();
- markellipse.Tag = new MarkInfo() { m_id = id, m_workline = workLine, m_mark = mark, m_x = x, m_y = y, m_isVirtual = isVirtual };
- markellipse.Height = MarkDiameter;
- markellipse.Width = MarkDiameter;
- //markellipse.ToolTip = "ID:" + id+ "\r\nWorkLine:" + workLine + " Mark:" + mark;
- markellipse.ToolTip = string.Format("ID:{0}\r\nWorkLine:{1} Mark:{2}", id, workLine, mark);
- Canvas.SetLeft(markellipse, x - MarkDiameter / 2);
- Canvas.SetTop(markellipse, y - MarkDiameter / 2);
- //设置虚拟点颜色
- if (isVirtual)
- {
- markellipse.Fill = IsVirtualMark;
- }
- else
- {
- //非虚拟点加入ID显示
- markellipse.Fill = NotVirtualMark;
- Label marklable = new Label();
- marklable.FontSize = 10;
- marklable.Foreground = Brushes.Black;
- //marklable.Content = id.ToString();
- marklable.Content = mark.ToString();
- marklable.Tag = new MarkInfo() { m_id = id, m_workline = workLine, m_mark = mark, m_x = x, m_y = y, m_isVirtual = isVirtual };
- Canvas.SetLeft(marklable, x - 14);
- Canvas.SetTop(marklable, y - 20);
- canvas.Children.Add(marklable);
- pointLableList.Add(marklable);
- }
- canvas.Children.Add(markellipse);
- pointList.Add(markellipse);
- DAL.ZSql sql1 = new DAL.ZSql();
- sql1.Open("select * from T_Mark Order by WorkLine,Mark");
- dataGrid1.ItemsSource = sql1.m_table.DefaultView;
- sql1.Close();
- }
- }
- void UpdateEllipse(int id, double x, double y, int mark, int workLine, bool isVirtual)
- {
- int index = pointList.FindIndex(c => ((MarkInfo)c.Tag).m_id == id);
- if (index != -1)
- {
- Ellipse markellipse = pointList[index];
- markellipse.Tag = new MarkInfo() { m_id = id, m_workline = workLine, m_mark = mark, m_x = x, m_y = y, m_isVirtual = isVirtual };
- markellipse.Height = MarkDiameter;
- markellipse.Width = MarkDiameter;
- //markellipse.ToolTip = "ID:" + id+ "\r\nWorkLine:" + workLine + " Mark:" + mark;
- markellipse.ToolTip = string.Format("ID:{0}\r\nWorkLine:{1} Mark:{2}", id, workLine, mark);
- Canvas.SetLeft(markellipse, x - MarkDiameter / 2);
- Canvas.SetTop(markellipse, y - MarkDiameter / 2);
- //设置虚拟点颜色
- if (isVirtual)
- {
- markellipse.Fill = IsVirtualMark;
- }
- else
- {
- int index2 = pointLableList.FindIndex(c => c.Tag.ToString() == id.ToString());
- if (index2 != -1)
- {
- //非虚拟点加入ID显示
- markellipse.Fill = NotVirtualMark;
- Label marklable = pointLableList[index2];
- marklable.FontSize = 10;
- marklable.Foreground = Brushes.Black;
- //marklable.Content = id.ToString();
- marklable.Content = mark.ToString();
- marklable.Tag = new MarkInfo() { m_id = id, m_workline = workLine, m_mark = mark, m_x = x, m_y = y, m_isVirtual = isVirtual };
- Canvas.SetLeft(marklable, x - 14);
- Canvas.SetTop(marklable, y - 20);
- }
- }
- DAL.ZSql sql1 = new DAL.ZSql();
- sql1.Open("select * from T_Mark Order by WorkLine,Mark");
- dataGrid1.ItemsSource = sql1.m_table.DefaultView;
- sql1.Close();
- }
- }
- void DeleteEllipse(int id)
- {
- int index = pointList.FindIndex(c => ((MarkInfo)c.Tag).m_id == id);
- if (index != -1)
- {
- canvas.Children.Remove(pointList[index]);
- pointList.RemoveAt(index);
- }
- int index2 = pointLableList.FindIndex(c => ((MarkInfo)c.Tag).m_id == id);
- if (index2 != -1)
- {
- canvas.Children.Remove(pointLableList[index2]);
- pointLableList.RemoveAt(index2);
- }
- if (index != -1 || index2 != -1)
- {
- DAL.ZSql sql1 = new DAL.ZSql();
- sql1.Open("select * from T_Mark Order by WorkLine,Mark");
- dataGrid1.ItemsSource = sql1.m_table.DefaultView;
- sql1.Close();
- }
- }
- private void LoadData()
- {
- DAL.ZSql sql1 = new DAL.ZSql();
- sql1.Open("select * from T_Mark Order by WorkLine,Mark");
- //加载地图中地标
- canvas.Children.Clear();
- pointLableList.Clear();
- pointList.Clear();
- double x = 0, y = 0;
- for (int i = 0; i < sql1.Rows.Count; i++)
- {
- x = Convert.ToDouble(sql1.Rows[i]["XPos"]);
- y = Convert.ToDouble(sql1.Rows[i]["YPos"]);
- Ellipse markellipse = new Ellipse();
- markellipse.Tag = new MarkInfo() { m_id = Convert.ToInt32(sql1.Rows[i]["ID"]), m_workline = Convert.ToInt32(sql1.Rows[i]["WorkLine"]), m_mark = Convert.ToInt32(sql1.Rows[i]["Mark"]), m_x = Convert.ToDouble(sql1.Rows[i]["XPos"]), m_y = Convert.ToDouble(sql1.Rows[i]["YPos"]), m_isVirtual = Convert.ToBoolean(sql1.Rows[i]["VirtualMark"]) };
- markellipse.Height = MarkDiameter;
- markellipse.Width = MarkDiameter;
- markellipse.ToolTip = "ID:" + sql1.Rows[i]["ID"].ToString() + "\r\nWorkLine:" + sql1.Rows[i]["WorkLine"].ToString() + " Mark:" + sql1.Rows[i]["Mark"];
- Canvas.SetLeft(markellipse, x - MarkDiameter / 2);
- Canvas.SetTop(markellipse, y - MarkDiameter / 2);
- //设置虚拟点颜色
- if (Convert.ToBoolean(sql1.Rows[i]["VirtualMark"]))
- {
- markellipse.Fill = IsVirtualMark;
- }
- else
- {
- //非虚拟点加入ID显示
- markellipse.Fill = NotVirtualMark;
- Label marklable = new Label();
- marklable.FontSize = 7;
- marklable.Foreground = Brushes.Black;
- //marklable.Content = sql1.Rows[i]["ID"].ToString(); //显示地标ID
- marklable.Content = sql1.Rows[i]["Mark"].ToString(); //文字显示地标号
- marklable.Tag = new MarkInfo() { m_id = Convert.ToInt32(sql1.Rows[i]["ID"]), m_workline = Convert.ToInt32(sql1.Rows[i]["WorkLine"]), m_mark = Convert.ToInt32(sql1.Rows[i]["Mark"]), m_x = Convert.ToDouble(sql1.Rows[i]["XPos"]), m_y = Convert.ToDouble(sql1.Rows[i]["YPos"]), m_isVirtual = Convert.ToBoolean(sql1.Rows[i]["VirtualMark"]) };
- Canvas.SetLeft(marklable, x -10);
- Canvas.SetTop(marklable, y - 15);
- canvas.Children.Add(marklable);
- pointLableList.Add(marklable);
-
- }
- //地标都显示出来
- canvas.Children.Add(markellipse);
- pointList.Add(markellipse);
- }
- //加载表格
- dataGrid1.ItemsSource = sql1.m_table.DefaultView;
- sql1.Close();
- }
- /// <summary>
- /// 加载电子地图背景图片
- /// </summary>
- /// <param name="struri">电子地图图片位置</param>
- public void MapInit(string struri)
- {
- ImageBrush imageBrush = new ImageBrush();
- imageBrush.ImageSource = new BitmapImage(new Uri(struri, UriKind.RelativeOrAbsolute));
- imageBrush.Stretch = Stretch.Uniform;
- imageBrush.AlignmentX = AlignmentX.Left;
- canvas.Background = imageBrush;
- }
- /// <summary>
- /// 加载表格中数据
- /// </summary>
- private void LoadData2()
- {
- DAL.ZSql sql1 = new DAL.ZSql();
- sql1.Open("select * from T_Mark Order by WorkLine,Mark");
- //加载地图中地标
- canvas.Children.Clear();
- double x = 0, y = 0;
- for (int i = 0; i < sql1.Rows.Count; i++)
- {
- x = Convert.ToDouble(sql1.Rows[i]["XPos"]);
- y = Convert.ToDouble(sql1.Rows[i]["YPos"]);
- Ellipse markellipse = new Ellipse();
- markellipse.Height = MarkDiameter;
- markellipse.Width = MarkDiameter;
- markellipse.ToolTip = "ID:" + sql1.Rows[i]["ID"].ToString() + "\r\nWorkLine:" + sql1.Rows[i]["WorkLine"].ToString() + " Mark:" + sql1.Rows[i]["Mark"];
- Canvas.SetLeft(markellipse, x - MarkDiameter / 2);
- Canvas.SetTop(markellipse, y - MarkDiameter / 2);
-
- //设置虚拟点颜色
- if (Convert.ToBoolean(sql1.Rows[i]["VirtualMark"]))
- {
- markellipse.Fill = IsVirtualMark;
- }
- else
- {
- //非虚拟点加入ID显示
- markellipse.Fill = NotVirtualMark;
- Label marklable = new Label();
- marklable.FontSize = 10;
- marklable.Foreground = Brushes.Black;
- //marklable.Content = sql1.Rows[i]["ID"].ToString();
- marklable.Content = sql1.Rows[i]["Mark"].ToString();
- Canvas.SetLeft(marklable, x - 14);
- Canvas.SetTop(marklable, y - 20);
- canvas.Children.Add(marklable);
- }
- //地标都显示出来
- canvas.Children.Add(markellipse);
- }
- //加载表格
- dataGrid1.ItemsSource = sql1.m_table.DefaultView;
- sql1.Close();
- }
- /// <summary>
- /// 添加记录
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void AddRecord_Click(object sender, RoutedEventArgs e)
- {
- string txtworkline = tbWorkLine.Text.Trim();
- string txtmark = tbMark.Text.Trim();
- string txtxpos = tbXPos.Text.Trim();
- string txtypos = tbYPos.Text.Trim();
- if (string.IsNullOrEmpty(txtworkline) || string.IsNullOrEmpty(txtmark) ||
- string.IsNullOrEmpty(txtxpos) || string.IsNullOrEmpty(txtypos))
- {
- MessageBox.Show("对不起,您输入信息不全!");
- return;
- }
- sql.Open("select * from T_Mark where WorkLine=" + txtworkline + " and Mark=" + txtmark);
- if (sql.Rows.Count > 0)
- {
- MessageBox.Show("已存在此记录!");
- return;
- }
- int i = sql.Open("insert into T_Mark (WorkLine,Mark,XPos,YPos,VirtualMark) Values (@workline,@mark,@xpos,@ypos,@virtualmark)",
- new SqlParameter[]{
- new SqlParameter("workline",txtworkline),
- new SqlParameter("mark",txtmark),
- new SqlParameter("xpos",txtxpos),
- new SqlParameter("ypos",txtypos),
- new SqlParameter("virtualmark", Convert.ToBoolean(rbIsVirtual.IsChecked)?"1":"0")
- });
- if (i >= 0)
- {
- MessageBox.Show("添加记录成功!");
- //LoadData();
- {
- sql.Open("select * from T_Mark where WorkLine=" + txtworkline + " and Mark=" + txtmark);
- if (sql.Rows.Count > 0)
- {
- int id = int.Parse(sql.Rows[0]["ID"].ToString());
- double x = double.Parse(sql.Rows[0]["XPos"].ToString());
- double y = double.Parse(sql.Rows[0]["YPos"].ToString());
- int mark = int.Parse(sql.Rows[0]["Mark"].ToString());
- int workline = int.Parse(sql.Rows[0]["WorkLine"].ToString());
- bool isVirtual = bool.Parse(sql.Rows[0]["VirtualMark"].ToString());
- AddEllipse(id, x, y, mark, workline, isVirtual);
- }
- }
- }
- }
- /// <summary>
- /// 修改记录
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ModifyRecord_Click(object sender, RoutedEventArgs e)
- {
- //修改日期:2014-04-04
- //不能修改地标
- // if (id <= 0)
- // {
- // MessageBox.Show("对不起,请选择修改记录!");
- // return;
- // }
- string txtworkline = tbWorkLine.Text.Trim();
- string txtmark = tbMark.Text.Trim();
- string txtxpos = tbXPos.Text.Trim();
- string txtypos = tbYPos.Text.Trim();
- if (string.IsNullOrEmpty(txtworkline) || string.IsNullOrEmpty(txtmark) ||
- string.IsNullOrEmpty(txtxpos) || string.IsNullOrEmpty(txtypos))
- {
- MessageBox.Show("对不起,不能输入为空信息!");
- return;
- }
- //修改日期:2014-01-02
- //修改日期:2014-04-04
- //不能修改地标
- sql.Open("select * from T_Mark where WorkLine=" + txtworkline + " and Mark=" + txtmark);
- if (sql.Rows.Count < 1)
- {
- MessageBox.Show("您需要修改的地标不存在,请重新输入!");
- return;
- }
- //修改日期:2014-04-04
- //不能修改地标
- // int i = sql.Open("update T_Mark set WorkLine=@workline,Mark=@mark,XPos=@xpos,YPos=@ypos,VirtualMark=@virtualmark where ID=@id", new SqlParameter[]{
- // new SqlParameter("id",id.ToString()),
- // new SqlParameter("workline",txtworkline),
- // new SqlParameter("mark",txtmark),
- // new SqlParameter("xpos",txtxpos),
- // new SqlParameter("ypos",txtypos),
- // new SqlParameter("virtualmark", Convert.ToBoolean(rbIsVirtual.IsChecked)?"1":"0")
- // });
- // if (i >= 0)
- // {
- // MessageBox.Show("修改记录成功!");
- // LoadData();
- // }
- int i = sql.Open("update T_Mark set XPos=@xpos,YPos=@ypos,VirtualMark=@virtualmark where WorkLine=@workline and Mark=@mark", new SqlParameter[]{
- new SqlParameter("workline",txtworkline),
- new SqlParameter("mark",txtmark),
- new SqlParameter("xpos",txtxpos),
- new SqlParameter("ypos",txtypos),
- new SqlParameter("virtualmark", Convert.ToBoolean(rbIsVirtual.IsChecked)?"1":"0")
- });
- if (i >= 0)
- {
- MessageBox.Show("修改记录成功!");
- //LoadData();
- {
- sql.Open("select * from T_Mark where WorkLine=" + txtworkline + " and Mark=" + txtmark);
- if (sql.Rows.Count > 0)
- {
- int id = int.Parse(sql.Rows[0]["ID"].ToString());
- double x = double.Parse(sql.Rows[0]["XPos"].ToString());
- double y = double.Parse(sql.Rows[0]["YPos"].ToString());
- int mark = int.Parse(sql.Rows[0]["Mark"].ToString());
- int workline = int.Parse(sql.Rows[0]["WorkLine"].ToString());
- bool isVirtual = bool.Parse(sql.Rows[0]["VirtualMark"].ToString());
- UpdateEllipse(id, x, y, mark, workline, isVirtual);
- }
- }
- }
- }
- /// <summary>
- /// 删除记录
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void DeleteRecord_Click(object sender, RoutedEventArgs e)
- {
- if (id > 0)
- {
- int i = sql.Open("delete from T_Mark where ID=" + id.ToString());
- if (i >= 0)
- {
- MessageBox.Show("删除记录成功!");
- //LoadData();
- {
- DeleteEllipse(id);
- }
- }
- sql.Close();
- }
- }
- /// <summary>
- /// 删除全部记录
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void DeleteAll_Click(object sender, RoutedEventArgs e)
- {
- if (MessageBox.Show("确认要删除此全部地标?", "警告", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
- {
- int i = sql.Open("Truncate Table T_Mark");
- if (i >= 0)
- {
- MessageBox.Show("删除记录成功!");
- sql.Open("Truncate Table T_Line");
- sql.Open("Truncate Table T_Traffic");
- /*
- sql.Open("DELETE FROM T_Line");
- sql.Open("DELETE FROM T_Traffic");*/
- LoadData();
- }
- }
- }
- /// <summary>
- /// 表格选择不同行消息触发
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- DataRowView selectItem = dataGrid1.SelectedItem as DataRowView;
- if (selectItem != null)
- {
- id = Convert.ToInt16(selectItem["ID"].ToString().Trim());
- tbWorkLine.Text = selectItem["WorkLine"].ToString().Trim();
- tbMark.Text = selectItem["Mark"].ToString().Trim();
- tbXPos.Text = selectItem["XPos"].ToString().Trim();
- tbYPos.Text = selectItem["YPos"].ToString().Trim();
- if (Convert.ToBoolean(selectItem["VirtualMark"]))
- {
- rbIsVirtual.IsChecked = true;
- }
- else
- {
- rbNotVirtual.IsChecked = true;
- }
- canvas.Children.Remove(SelectedMark);
- Canvas.SetLeft(SelectedMark, Convert.ToInt16(selectItem["XPos"]) - SelectedMark.Width / 2);
- Canvas.SetTop(SelectedMark, Convert.ToInt16(selectItem["YPos"]) - SelectedMark.Width / 2);
- canvas.Children.Add(SelectedMark);
- }
- else
- {
- tbWorkLine.Text = "";
- tbMark.Text = "";
- tbXPos.Text = "";
- tbYPos.Text = "";
- }
- }
- /// <summary>
- /// 快速添加
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnQuickAdd_Click(object sender, RoutedEventArgs e)
- {
- if (string.IsNullOrEmpty(tbWorkLine.Text.Trim()))
- {
- MessageBox.Show("请输入要添加的生产区号。");
- return;
- }
- IsQuickAdd = true;
- tbMark.IsEnabled = false;
- tbXPos.IsEnabled = false;
- tbYPos.IsEnabled = false;
- rbNotVirtual.IsChecked = true;
- sql.Open("Select Max(Mark) As MaxValue from T_Mark where WorkLine=" + tbWorkLine.Text.Trim());
- if (sql.Rows.Count <= 0)
- {
- MessageBox.Show("不存在此生产区号,请重新输入。");
- return;
- }
- if (string.IsNullOrEmpty(sql.Rows[0]["MaxValue"].ToString()))
- {
- tbMark.Text = "1";
- }
- else
- {
- tbMark.Text = (Convert.ToUInt32(sql.Rows[0]["MaxValue"]) + 1).ToString();
- }
- }
- bool MapZoomInOut = false;
- Point lastpoint = new Point(0, 0);
- Point OffsetPoint = new Point(0, 0);
- /// <summary>
- /// 画布中鼠标移动消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void canvas_MouseMove(object sender, MouseEventArgs e)
- {
- if (IsQuickAdd || IsQuickGet)
- {
- Point point=Mouse.GetPosition(canvas);
- tbXPos.Text = point.X.ToString("F2");
- tbYPos.Text = point.Y.ToString("F2");
- return;
- }
- if (MapZoomInOut)
- {
- Point newpoint = e.GetPosition(null);
- canvas.Offset = new Point(lastpoint.X - newpoint.X, lastpoint.Y - newpoint.Y);
- }
- }
- /// <summary>
- /// 画布中鼠标右键消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Page_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
- {
- this.Cursor = Cursors.Arrow;
- IsQuickAdd = false;
- IsQuickGet = false;
- tbMark.IsEnabled = true;
- tbXPos.IsEnabled = true;
- tbYPos.IsEnabled = true;
- }
- /// <summary>
- /// 快速添加
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnQuickGet_Click(object sender, RoutedEventArgs e)
- {
- IsQuickGet = true;
- }
- /// <summary>
- /// 画布中鼠标左键消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- if (IsQuickGet)
- {
- IsQuickGet = false;
- this.Cursor = Cursors.Arrow;
- }
- else if (IsQuickAdd)
- {
- string strworkline = tbWorkLine.Text.Trim();
- if (string.IsNullOrEmpty(tbMark.Text.Trim()) || string.IsNullOrEmpty(strworkline))
- {
- MessageBox.Show("请输入生产区和地标号!");
- return;
- }
- uint i = Convert.ToUInt32(tbMark.Text.Trim());
- sql.Open("insert into T_Mark (WorkLine,Mark,XPos,YPos,VirtualMark) Values (@workline,@mark,@xpos,@ypos,@virtualmark)",
- new SqlParameter[]{
- new SqlParameter("workline",tbWorkLine.Text.Trim()),
- new SqlParameter("mark",i.ToString()),
- new SqlParameter("xpos",tbXPos.Text.Trim()),
- new SqlParameter("ypos",tbYPos.Text.Trim()),
- new SqlParameter("virtualmark", Convert.ToBoolean(rbIsVirtual.IsChecked)?"1":"0")
- });
- //LoadData();
- {
- sql.Open("select * from T_Mark where WorkLine=" + tbWorkLine.Text.Trim() + " and Mark=" + i.ToString());
- if (sql.Rows.Count > 0)
- {
- int id = int.Parse(sql.Rows[0]["ID"].ToString());
- double x = double.Parse(sql.Rows[0]["XPos"].ToString());
- double y = double.Parse(sql.Rows[0]["YPos"].ToString());
- int mark = int.Parse(sql.Rows[0]["Mark"].ToString());
- int workline = int.Parse(sql.Rows[0]["WorkLine"].ToString());
- bool isVirtual = bool.Parse(sql.Rows[0]["VirtualMark"].ToString());
- AddEllipse(id, x, y, mark, workline, isVirtual);
- }
- }
- tbMark.Text = (i + 1).ToString();
- tbWorkLine.Text = strworkline;
- }
- else
- {
- MapZoomInOut = true;
- lastpoint.X = e.GetPosition(null).X + OffsetPoint.X;
- lastpoint.Y = e.GetPosition(null).Y + OffsetPoint.Y;
- this.Cursor = Cursors.Hand;
- }
- }
- /// <summary>
- /// 鼠标移动到画布消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void canvas_MouseEnter(object sender, MouseEventArgs e)
- {
- if (IsQuickAdd || IsQuickGet)
- {
- this.Cursor = Cursors.Cross;
- }
- }
- /// <summary>
- /// 鼠标移出画布消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void canvas_MouseLeave(object sender, MouseEventArgs e)
- {
- if (IsQuickAdd || IsQuickGet)
- {
- this.Cursor = Cursors.Arrow;
- }
- MapZoomInOut = false;
- }
- /// <summary>
- /// 鼠标左键弹起消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
- {
- if (MapZoomInOut)
- {
- MapZoomInOut = false;
- OffsetPoint = canvas.Offset;
- }
- if (!(IsQuickAdd || IsQuickGet))
- {
- this.Cursor = Cursors.Arrow;
- }
- }
- /// <summary>
- /// 鼠标滚轮消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void canvas_MouseWheel(object sender, MouseWheelEventArgs e)
- {
- canvas.Scale += e.Delta / 1000.0;
- //最大放大十倍
- if (canvas.Scale > 10)
- {
- canvas.Scale = 10;
- }
- //缩小可以小到3倍
- if (canvas.Scale < 0.3)
- {
- canvas.Scale = 0.3;
- }
- }
- /// <summary>
- /// 非虚拟点颜色设置
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ENotVirtualMark_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- ColorFont.ColorDialog fntDialog = new ColorFont.ColorDialog(NotVirtualMark, MarkDiameter);
- if (fntDialog.ShowDialog() == true)
- {
- NotVirtualMark = fntDialog.selectedColor;
- MarkDiameter = fntDialog.selectedSize;
- ENotVirtualMark.Fill = fntDialog.selectedColor;
- LoadData();
- }
- }
- /// <summary>
- /// 虚拟点颜色设置
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void EVirtualMark_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- ColorFont.ColorDialog fntDialog = new ColorFont.ColorDialog(IsVirtualMark, MarkDiameter);
- if (fntDialog.ShowDialog() == true)
- {
- IsVirtualMark = fntDialog.selectedColor;
- MarkDiameter = fntDialog.selectedSize;
- EVirtualMark.Fill = fntDialog.selectedColor;
- LoadData();
- }
- }
- /// <summary>
- /// 页面卸载消息
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Page_Unloaded(object sender, RoutedEventArgs e)
- {
- Properties.Settings.Default.MarkVirtualColor = IsVirtualMark.Color;
- Properties.Settings.Default.MarkNotColor = NotVirtualMark.Color;
- Properties.Settings.Default.MarkDiameter = MarkDiameter;
- Properties.Settings.Default.Save();
- }
- }
- public class MarkInfo
- {
- public int m_id;
- public int m_workline;
- public int m_mark;
- public double m_x;
- public double m_y;
- public bool m_isVirtual;
- }
- }
|