Beispiel #1
0
 /// <summary>
 /// 删除Arrow
 /// </summary>
 /// <param name="myButton"></param>
 public void RemoveArrow(MyArrow myArrow)
 {
     if (_inkCanvas.Children.IndexOf(myArrow.Arrow) > -1)
     {
         _inkCanvas.Children.Remove(myArrow.Arrow);
         myArrow.IsDeleted = true;
     }
 }
Beispiel #2
0
 /// <summary>
 /// 增加一个Arrow
 /// </summary>
 /// <param name="button"></param>
 public void AddArrow(MyArrow myArrow)
 {
     if (_inkCanvas.Children.IndexOf(myArrow.Arrow) == -1)
     {
         myArrow.Arrow.Stroke = System.Windows.Media.Brushes.Black;
         _inkCanvas.Children.Add(myArrow.Arrow);
         myArrow.IsDeleted = false;
         Sketch.AddArrow(myArrow);
     }
 }
        public override void _presenter_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (startPoint != null)
            {
                Point endPoint = e.GetPosition(_inkCanvas);
                foreach (MyButton myButton in _inkCollector.Sketch.MyButtons)
                {
                    if (MathTool.getInstance().isCloseMyButton(endPoint, myButton, 20) == true)
                    {
                        target = myButton;
                        break;
                    }
                }

                if (source != target && source != null && target != null)
                {
                    ThumbConnector thumbConnector = new ThumbConnector(source, target);
                    MyArrow        ma             = new MyArrow(thumbConnector.arrow);
                    ma.PreMyButton  = source;
                    ma.NextMyButton = target;
                    ma.StartPoint   = startPoint;
                    ma.EndPoint     = endPoint;
                    int i = 0;
                    foreach (MyArrow myArrow in _inkCollector.Sketch.MyArrows)
                    {
                        if (myArrow.IsDeleted == false && myArrow.PreMyButton.IsDeleted == false && myArrow.PreMyButton == source && _inkCanvas.Children.IndexOf(myArrow.Arrow) > -1)
                        {
                            Command doana = new DeleteOldAddNewArrow(_inkCollector, myArrow, ma);
                            doana.execute();
                            _inkCollector.CommandStack.Push(doana);
                            i = -1;
                            break;
                        }
                        i++;
                    }
                    if (i >= _inkCollector.Sketch.MyArrows.Count)
                    {
                        Command aac = new AddArrowCommand(_inkCollector, ma);
                        aac.execute();
                        _inkCollector.CommandStack.Push(aac);
                    }
                }
            }
            _inkCanvas.ReleaseMouseCapture();
        }
        public void updateArrow(InkCanvas ic, InkCollector _inkCollector)
        {
            List <MyArrow> maList = new List <MyArrow>();

            foreach (MyArrow myArrow in _inkCollector.Sketch.MyArrows)
            {
                if (myArrow.IsDeleted == false && myArrow.NextMyButton == this && ic.Children.IndexOf(myArrow.Arrow) > -1 && myArrow.PreMyButton.isDeleted == false)
                {
                    ic.Children.Remove(myArrow.Arrow);
                    ThumbConnector tc = new ThumbConnector(myArrow.PreMyButton, this);
                    MyArrow        ma = new MyArrow(tc.arrow);
                    ma.PreMyButton  = myArrow.PreMyButton;
                    ma.NextMyButton = this;
                    ma.StartPoint   = tc.startPoint;
                    ma.EndPoint     = tc.endPoint;
                    maList.Add(ma);
                    continue;
                }
                if (myArrow.IsDeleted == false && myArrow.PreMyButton == this && ic.Children.IndexOf(myArrow.Arrow) > -1 && myArrow.NextMyButton.isDeleted == false)
                {
                    ic.Children.Remove(myArrow.Arrow);
                    ThumbConnector tc = new ThumbConnector(this, myArrow.NextMyButton);
                    MyArrow        ma = new MyArrow(tc.arrow);
                    ma.PreMyButton  = this;
                    ma.NextMyButton = myArrow.NextMyButton;
                    ma.StartPoint   = tc.startPoint;
                    ma.EndPoint     = tc.endPoint;
                    maList.Add(ma);
                    continue;
                }
                maList.Add(myArrow);
            }

            for (int i = 0; i < maList.Count; i++)
            {
                if (_inkCollector.Sketch.MyArrows[i] != maList[i])
                {
                    _inkCollector.Sketch.MyArrows[i] = maList[i];
                    ic.Children.Add(_inkCollector.Sketch.MyArrows[i].Arrow);
                }
            }
        }
Beispiel #5
0
		/// <summary>
		/// 删除一个Button
		/// </summary>
		/// <param name="button">要删除的Arrow</param>
		public void RemoveArrow(MyArrow myArrow)
		{
			MyArrows.Remove(myArrow);
		}
Beispiel #6
0
		/// <summary>
		/// 增加一个Arrow
		/// </summary>
		/// <param name="button">要增加的Arrow</param>
		public void AddArrow(MyArrow myArrow)
		{
			MyArrows.Add(myArrow);
		}
 public AddArrowCommand(InkCollector _inkCollector, MyArrow myArrow)
 {
     this._myArrow      = myArrow;
     this._inkCollector = _inkCollector;
 }
        private void KeyWordsSentence_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                String keyWordsSentence = KeyWordsSentence.Text;
                keyWordsSentence.Trim();

                //显示所有的mybutton
                foreach (MyButton mb in _inkCollector.Sketch.MyButtons)
                {
                    if (mb.IsDeleted == false)
                    {
                        Command vmbc = new VisibleMyButtonCommand(_inkCollector, mb);
                        vmbc.execute();
                        _inkCollector.CommandStack.Push(vmbc);
                    }
                }

                //MessageBox.Show(keyWordsSentence.Length.ToString());
                List <MyButton> myButtonList = new List <MyButton>();
                string[]        strArray     = autoStoryBoardByString(keyWordsSentence);
                for (int i = 0; i < strArray.Length; i++)
                {
                    string CharString = strArray[i];
                    string otherWords = "的了吗,,。.着";
                    if (otherWords.IndexOf(CharString) == -1)
                    {
                        foreach (MyButton myButton in _inkCollector.Sketch.MyButtons)
                        {
                            bool findFlag = false;
                            //第一步:检测文本
                            foreach (MyRichTextBox myRichTextBox in myButton.InkFrame.InkCollector.Sketch.MyRichTextBoxs)
                            {
                                TextRange textRange = new TextRange(myRichTextBox.RichTextBox.Document.ContentStart, myRichTextBox.RichTextBox.Document.ContentEnd);
                                if (textRange.Text.IndexOf(CharString) > -1 && myButtonList.IndexOf(myButton) == -1)
                                {
                                    myButtonList.Add(myButton);
                                    MessageBox.Show("MyRichTextBox:" + CharString);
                                    findFlag = true;
                                    break;
                                }
                            }
                            if (findFlag)
                            {
                                break;
                            }

                            //第二步:检测图片名称
                            foreach (MyImage mi in myButton.InkFrame.InkCollector.Sketch.Images)
                            {
                                if (mi.SafeFileName.IndexOf(CharString) > -1 && myButtonList.IndexOf(myButton) == -1)
                                {
                                    myButtonList.Add(myButton);
                                    MessageBox.Show("MyImage:" + CharString);
                                    findFlag = true;
                                    break;
                                }
                            }
                            if (findFlag)
                            {
                                break;
                            }

                            //第三步:检测视频名称,全局Mybutton较优先
                            if (myButton.VideoFileName.IndexOf(CharString) > -1 && myButtonList.IndexOf(myButton) == -1 && myButton.IsGlobal)
                            {
                                myButtonList.Add(myButton);
                                MessageBox.Show("VideoFileName:" + CharString);
                                break;
                            }
                        }
                    }
                }

                //第一步:删除不需要的Mybutton
                List <MyButton> myButtonOtherList = new List <MyButton>();
                foreach (MyButton mb in _inkCollector.Sketch.MyButtons)
                {
                    if (myButtonList.IndexOf(mb) == -1)
                    {
                        myButtonOtherList.Add(mb);
                    }
                }
                //MessageBox.Show(Thumb_InkFrame._inkCanvas.Children.Count.ToString());
                foreach (MyButton mb in myButtonOtherList)
                {
                    Command hmbc = new HiddenMyButtonCommand(_inkCollector, mb);
                    hmbc.execute();
                    _inkCollector.CommandStack.Push(hmbc);
                }
                //MessageBox.Show(Thumb_InkFrame._inkCanvas.Children.Count.ToString());
                foreach (MyArrow ma in _inkCollector.Sketch.MyArrows)
                {
                    DeleteArrowCommand dac = new DeleteArrowCommand(_inkCollector, ma);
                    dac.execute();
                    _inkCollector.CommandStack.Push(dac);
                }

                //第二步:移动需要的Mybutton并添加连线
                int ThumbIndex = 0;
                foreach (MyButton mb in myButtonList)
                {
                    double            Left = _thumbInterval + (_thumbWidth + _thumbInterval) * (ThumbIndex % 6);
                    double            Top  = _thumbInterval + (_thumbWidth * (mb.Height / mb.Width) + _thumbInterval) * (ThumbIndex / 6);
                    ButtonMoveCommand bmc  = new ButtonMoveCommand(mb, Left - mb.Left, Top - mb.Top, _inkCollector);
                    bmc.execute();
                    _inkCollector.CommandStack.Push(bmc);
                    if (ThumbIndex != myButtonList.Count - 1)
                    {
                        ThumbConnector thumbConnector = new ThumbConnector(myButtonList[ThumbIndex], myButtonList[ThumbIndex + 1]);
                        MyArrow        ma             = new MyArrow(thumbConnector.arrow);
                        ma.PreMyButton  = myButtonList[ThumbIndex];
                        ma.NextMyButton = myButtonList[ThumbIndex + 1];
                        ma.StartPoint   = thumbConnector.startPoint;
                        ma.EndPoint     = thumbConnector.endPoint;
                        Command aac = new AddArrowCommand(_inkCollector, ma);
                        aac.execute();
                        _inkCollector.CommandStack.Push(aac);
                    }
                    ThumbIndex++;
                }
            }
        }
 public DeleteOldAddNewArrow(InkCollector _inkCollector, MyArrow myArrowOld, MyArrow myArrowNew)
 {
     this._myArrowOld   = myArrowOld;
     this._myArrowNew   = myArrowNew;
     this._inkCollector = _inkCollector;
 }
Beispiel #10
0
        private void DrawShapes(Graphics g)
        {
            try
            {
                string errMessage = "";
                //ListXMLShapes.Clear();
                XmlNodeList    xml_lines, xml_arrows, xml_rects, xml_regions;
                XmlDocument    xmlDoc = new XmlDocument();
                RecognizerInfo ri     = RecognizerBusiness.Instance.GetRecognizerInfoByCameraId(ref errMessage, _cameraID);
                if (ri == null)
                {
                    //if (XtraMessageBox.Show("对不起,您使用的照片没有对应的识别器,请另选", "提示", MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
                    {
                        return;
                    }
                }
                string name = @"c:\" + ri.Id.ToString() + "." + _cameraID + "admin" + ".xml";
                xmlDoc.Load(@name);
                //直线
                xml_lines = xmlDoc.SelectSingleNode("/pr/cameras/camera/lines").ChildNodes;

                float xScale = (float)this.Width / _currentImage.Width;
                float yScale = (float)(this.Height) / _currentImage.Height;

                foreach (XmlNode lineitem in xml_lines)
                {
                    MyLine line = new MyLine();
                    line.MyPen = new Pen(Color.Red, 1);
                    XmlElement xe = (XmlElement)lineitem;
                    line.P1.X        = Convert.ToInt32(xe.GetAttribute("X1"));
                    line.P1.X        = (int)(line.P1.X * xScale);
                    line.P1.Y        = Convert.ToInt32(xe.GetAttribute("Y1"));
                    line.P1.Y        = (int)(line.P1.Y * yScale);
                    line.P2.X        = Convert.ToInt32(xe.GetAttribute("X2"));
                    line.P2.X        = (int)(line.P2.X * xScale);
                    line.P2.Y        = Convert.ToInt32(xe.GetAttribute("Y2"));
                    line.P2.Y        = (int)(line.P2.Y * yScale);
                    line.MyPen.Color = ColorTranslator.FromHtml(xe.GetAttribute("PenColor"));
                    line.MyPen.Width = Convert.ToInt32(xe.GetAttribute("PenWidth"));
                    g.DrawLine(line.MyPen, line.P1, line.P2);
                    //ListXMLShapes.Add(line);
                }
                //箭头
                xml_arrows = xmlDoc.SelectSingleNode("/pr/cameras/camera/arrows").ChildNodes;
                foreach (XmlNode arrowitem in xml_arrows)
                {
                    MyArrow arrow = new MyArrow();
                    arrow.MyPen = new Pen(Color.Red, 1);
                    XmlElement xa = (XmlElement)arrowitem;
                    arrow.P1.X        = Convert.ToInt32(xa.GetAttribute("X1"));
                    arrow.P1.X        = (int)(arrow.P1.X * xScale);
                    arrow.P1.Y        = Convert.ToInt32(xa.GetAttribute("Y1"));
                    arrow.P1.Y        = (int)(arrow.P1.Y * yScale);
                    arrow.P2.X        = Convert.ToInt32(xa.GetAttribute("X2"));
                    arrow.P2.X        = (int)(arrow.P2.X * xScale);
                    arrow.P2.Y        = Convert.ToInt32(xa.GetAttribute("Y2"));
                    arrow.P2.Y        = (int)(arrow.P2.Y * yScale);
                    arrow.MyPen.Color = ColorTranslator.FromHtml(xa.GetAttribute("PenColor"));
                    arrow.MyPen.Width = Convert.ToInt32(xa.GetAttribute("PenWidth"));
                    g.DrawLine(arrow.MyPen, arrow.P1, arrow.P2);
                    //ListXMLShapes.Add(arrow);
                }
                //矩形
                xml_rects = xmlDoc.SelectSingleNode("/pr/cameras/camera/rects").ChildNodes;
                foreach (XmlNode rectitem in xml_rects)
                {
                    MyRect rect = new MyRect();
                    rect.MyPen = new Pen(Color.Red, 1);
                    XmlElement xr = (XmlElement)rectitem;
                    rect.P1.X        = Convert.ToInt32(xr.GetAttribute("X"));
                    rect.P1.X        = (int)(rect.P1.X * xScale);
                    rect.P1.Y        = Convert.ToInt32(xr.GetAttribute("Y"));
                    rect.P1.Y        = (int)(rect.P1.Y * yScale);
                    rect.Width       = Convert.ToInt32(xr.GetAttribute("W"));
                    rect.Width       = (int)(rect.Width * xScale);
                    rect.Height      = Convert.ToInt32(xr.GetAttribute("H"));
                    rect.Height      = (int)(rect.Height * yScale);
                    rect.MyPen.Color = ColorTranslator.FromHtml(xr.GetAttribute("PenColor"));
                    rect.MyPen.Width = Convert.ToInt32(xr.GetAttribute("PenWidth"));
                    g.DrawRectangle(rect.MyPen, rect.P1.X, rect.P1.Y, rect.Width, rect.Height);
                    //ListXMLShapes.Add(rect);
                }
                //多边形
                xml_regions = xmlDoc.SelectSingleNode("/pr/cameras/camera/regions").ChildNodes;
                foreach (XmlNode regionitem in xml_regions)
                {
                    MyPoly poly = new MyPoly();
                    poly.MyPen = new Pen(Color.Red, 1);
                    XmlElement xp = (XmlElement)regionitem;
                    poly.MyPen.Color = ColorTranslator.FromHtml(xp.GetAttribute("PenColor"));
                    poly.MyPen.Width = Convert.ToInt32(xp.GetAttribute("PenWidth"));
                    XmlNodeList pointlist = regionitem.ChildNodes;
                    foreach (XmlNode pitem in pointlist)
                    {
                        Point      p    = new Point();
                        XmlElement test = (XmlElement)pitem;
                        p.X = Convert.ToInt32(test.GetAttribute("X"));
                        p.X = (int)(p.X * xScale);
                        p.Y = Convert.ToInt32(test.GetAttribute("Y"));
                        p.Y = (int)(p.Y * yScale);
                        poly.ListPoint.Add(p);
                    }
                    //IsFinished=true
                    poly.IsFinished = true;
                    g.DrawPolygon(poly.MyPen, poly.ListPoint.ToArray());
                    //ListXMLShapes.Add(poly);
                }
            }
            catch (Exception)
            {
                ;
            }
        }