Exemplo n.º 1
0
        public override void _presenter_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (_startPoint != null)
            {
                Point  current = e.GetPosition(_inkCanvas);
                double offsetx = current.X - _startPoint.X;
                double offsety = current.Y - _startPoint.Y;
                _inkCollector.CenterSelect = new System.Windows.Input.StylusPoint(_inkCollector.CenterSelect.X + offsetx, _inkCollector.CenterSelect.Y + offsety);

                if (selectedStrokes.Count > 0)
                {
                    foreach (MyStroke myStroke in selectedStrokes)
                    {
                        MoveCommand mc = new MoveCommand(myStroke, offsetx, offsety);
                        _inkCollector.CommandStack.Push(mc);
                    }
                }
                if (selectedImages.Count > 0)
                {
                    foreach (MyImage image in selectedImages)
                    {
                        Command imc = new ImageMoveCommand(image, offsetx, offsety);
                        _inkCollector.CommandStack.Push(imc);

                        foreach (ImageConnector connector in image.ConnectorCollection)
                        {
                            connector.adjustConnector();
                        }
                    }
                }
                if (selectedButtons.Count > 0)
                {
                    foreach (MyButton myButton in selectedButtons)
                    {
                        ButtonMoveCommand bmc = new ButtonMoveCommand(myButton, offsetx, offsety, _inkCollector);
                        _inkCollector.CommandStack.Push(bmc);
                    }
                }
            }
            _inkCanvas.ReleaseMouseCapture();
            pressedMouseLeftButtonDown = false;
        }
        private void DescByVideoPathButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
			List<MyButton> myButtonListNoArrow = new List<MyButton>();
			List<MyButton> myButtonListHaveArrow = new List<MyButton>();
			double _thumbInterval = 80;
			double _thumbWidth = 120;
			foreach (MyButton mb in _inkFrame.InkCollector.Sketch.MyButtons)
			{
				foreach (MyArrow ma in _inkFrame.InkCollector.Sketch.MyArrows)
				{
					if (ma.IsDeleted == false && (ma.PreMyButton == mb || ma.NextMyButton == mb) && mb.IsDeleted == false)
					{
						myButtonListHaveArrow.Add(mb);
					}
				}
			}
			double maxTop = 0;
			double maxHeight = 0;
			if (myButtonListHaveArrow.Count > 0)
			{
				maxTop = myButtonListHaveArrow[0].Top;
				maxHeight = myButtonListHaveArrow[0].Height;
			}
			foreach (MyButton mb in myButtonListHaveArrow)
			{
				maxTop = Math.Max(maxTop, mb.Top);
				maxHeight = Math.Max(maxHeight, mb.Height);
			}
			foreach (MyButton mb in _inkFrame.InkCollector.Sketch.MyButtons)
			{
				if (mb.IsDeleted == false && mb.Button.Visibility == Visibility.Collapsed)
				{
					Command vmbc = new VisibleMyButtonCommand(_inkFrame.InkCollector, mb);
					vmbc.execute();
				}
				if (myButtonListHaveArrow.IndexOf(mb) == -1 && mb.IsDeleted == false)
				{
					myButtonListNoArrow.Add(mb);
				}
			}
			myButtonListNoArrow.Sort(new ComparerVideoPath());
			for (int k = myButtonListNoArrow.Count - 1; k >= 0; k--)
			{
				double Left = _thumbInterval + (_thumbWidth + _thumbInterval) * ((myButtonListNoArrow.Count-1-k) % 6);
				int i = myButtonListNoArrow.Count-k-1;
				//double Top = _thumbInterval + maxTop + maxHeight + (_thumbWidth * (myButtonListNoArrow[i].Height / myButtonListNoArrow[i].Width) + _thumbInterval) * ((myButtonListNoArrow.Count-1 - i) / 6);
				double Top;
				if (i < 6)
				{
					Top = _thumbInterval + maxTop + maxHeight;
				}
				else
				{
					if (i % 6 == 0)
					{
						double maxTopButtonListNoArrow = myButtonListNoArrow[myButtonListNoArrow.Count - i].Top + myButtonListNoArrow[myButtonListNoArrow.Count - i].Height;
						for (int j = myButtonListNoArrow.Count - i + 1; j < myButtonListNoArrow.Count - i+5; j++)
						{
							double newTop = myButtonListNoArrow[j].Top + myButtonListNoArrow[j].Height;
							if (newTop > maxTopButtonListNoArrow)
							{
								maxTopButtonListNoArrow = newTop;
							}
						}
						Top = _thumbInterval + maxTopButtonListNoArrow;
					}
					else
					{
						Top = myButtonListNoArrow[myButtonListNoArrow.Count-1-(i / 6) * 6].Top;
					}
				}
				ButtonMoveCommand bmc = new ButtonMoveCommand(myButtonListNoArrow[k], Left - myButtonListNoArrow[k].Left, Top - myButtonListNoArrow[k].Top, _inkFrame.InkCollector);
				bmc.execute();
				_inkFrame.InkCollector.CommandStack.Push(bmc);
			}
        }
        private void ascSort(System.Collections.Generic.IComparer<MyButton> comp)
        {
            List<MyButton> myButtonListNoArrow = new List<MyButton>();
            List<MyButton> myButtonListHaveArrow = new List<MyButton>();
            double _thumbInterval = _videoAnnotation.ThumbInterval;
            double _thumbWidth = _videoAnnotation.ThumbWidth;
            foreach (MyButton mb in _inkFrame.InkCollector.Sketch.MyButtons)
            {
                foreach (MyArrow ma in _inkFrame.InkCollector.Sketch.MyArrows)
                {
                    if (ma.IsDeleted == false && (ma.PreMyButton == mb || ma.NextMyButton == mb) && mb.IsDeleted == false)
                    {
                        myButtonListHaveArrow.Add(mb);
                    }
                }
            }
            double maxTop = 0;
            double maxHeight = 0;
            if (myButtonListHaveArrow.Count > 0)
            {
                maxTop = myButtonListHaveArrow[0].Top;
                maxHeight = myButtonListHaveArrow[0].Height;
            }
            foreach (MyButton mb in myButtonListHaveArrow)
            {
                maxTop = Math.Max(maxTop, mb.Top);
                maxHeight = Math.Max(maxHeight, mb.Height);
            }
            foreach (MyButton mb in _inkFrame.InkCollector.Sketch.MyButtons)
            {
                if (mb.IsDeleted == false && mb.Button.Visibility == Visibility.Collapsed)
                {
                    Command vmbc = new VisibleMyButtonCommand(_inkFrame.InkCollector, mb);
                    vmbc.execute();
                }
                if (myButtonListHaveArrow.IndexOf(mb) == -1 && mb.IsDeleted == false)
                {
                    myButtonListNoArrow.Add(mb);
                }
            }
            myButtonListNoArrow.Sort(comp);
            int ThumbIndex = 0;
            double _thumbVerticalInterval = _videoAnnotation.ThumbVerticalInterval;
            //foreach (MyButton mb in myButtonListNoArrow)
            int _thumbCountPerLine = _videoAnnotation.ThumbCountPerLine;
            for (int i = 0; i < myButtonListNoArrow.Count; i++)
            {
                double Left = _thumbInterval + (_thumbWidth + _thumbInterval) * (i % _thumbCountPerLine);
                double Top;
                if (i < _thumbCountPerLine)
                {
                    Top = _thumbVerticalInterval;
                }
                else
                {
                    if (i % _thumbCountPerLine == 0)
                    {
                        double maxTopButtonListNoArrow = myButtonListNoArrow[i - _thumbCountPerLine].Top + myButtonListNoArrow[i - _thumbCountPerLine].Height;
                        for (int j = i - 5; j < i; j++)
                        {
                            double newTop = myButtonListNoArrow[j].Top + myButtonListNoArrow[j].Height;
                            if (newTop > maxTopButtonListNoArrow)
                            {
                                maxTopButtonListNoArrow = newTop;
                            }
                        }
                        Top = _thumbVerticalInterval + maxTopButtonListNoArrow;
                    }
                    else
                    {
                        Top = myButtonListNoArrow[(i / _thumbCountPerLine) * _thumbCountPerLine].Top;
                    }
                }
                //double Top = _thumbInterval + maxTop + maxHeight + (_thumbWidth * (mb.Height / mb.Width) + _thumbInterval) * (ThumbIndex / 6);
                ButtonMoveCommand bmc = new ButtonMoveCommand(myButtonListNoArrow[i], Left - myButtonListNoArrow[i].Left, Top - myButtonListNoArrow[i].Top, _inkFrame.InkCollector);
                bmc.execute();
                _inkFrame.InkCollector.CommandStack.Push(bmc);
                ThumbIndex++;

            }
        }
Exemplo n.º 4
0
        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 override void _presenter_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (pressedMouseLeftButtonDown)
            {
                if (_startPoint != null)
                {
                    current = e.GetPosition(_inkCanvas);


                    switch (MoveOrZoom)
                    {
                    case "Move":
                        double offsetx = current.X - _startPoint.X;
                        double offsety = current.Y - _startPoint.Y;
                        _inkCollector.IsAutoMove = true;
                        foreach (MyButton myButton in _inkCollector.SelectButtons)
                        {
                            myButton.InkFrame._inkCanvas.ReleaseMouseCapture();
                            myButton.InkFrame._inkCanvas.Cursor = Cursors.Arrow;
                            myButton.TextBoxTime.Background     = null;
                            ButtonMoveCommand bmc = new ButtonMoveCommand(myButton, offsetx, offsety, _inkCollector);
                            _inkCollector.CommandStack.Push(bmc);
                        }
                        if (_inkCollector.SelectedImages.Count > 0)
                        {
                            foreach (MyImage image in _inkCollector.SelectedImages)
                            {
                                Command imc = new ImageMoveCommand(image, offsetx, offsety);
                                _inkCollector.CommandStack.Push(imc);
                                image.Bound.Visibility = Visibility.Collapsed;
                                _inkCanvas.Cursor      = Cursors.Arrow;
                                image.Image.ReleaseMouseCapture();

                                foreach (ImageConnector connector in image.ConnectorCollection)
                                {
                                    connector.adjustConnector();
                                }
                            }
                        }
                        if (_inkCollector.SelectedStrokes.Count > 0)
                        {
                            foreach (MyStroke myStroke in _inkCollector.SelectedStrokes)
                            {
                                MoveCommand mc = new MoveCommand(myStroke, offsetx, offsety);
                                _inkCollector.CommandStack.Push(mc);
                            }
                        }
                        //移动图形
                        if (SelectedMyGraphics.Count > 0)
                        {
                            foreach (MyGraphic myGraphic in SelectedMyGraphics)
                            {
                                MyGraphicMoveCommand mgmc = new MyGraphicMoveCommand(myGraphic, offsetx, offsety, _inkCollector);
                                _inkCollector.CommandStack.Push(mgmc);
                                mgmc.searchRelation();
                            }
                            //MyGraphicsMoveCommand mgsmc = new MyGraphicsMoveCommand(SelectedMyGraphics, offsetx, offsety, _inkCollector.Sketch.MyGraphics, _inkCollector);
                            //_inkCollector.CommandStack.Push(mgsmc);
                            List <int> ids = GraphicMathTool.getInstance().getGraphicStructure(_inkCollector.Sketch.MyGraphics[0], _inkCollector, new List <int>());
                            foreach (int id in ids)
                            {
                                _inkCollector._mainPage.message.Content += id.ToString() + ",";
                            }
                        }
                        //移动文本
                        foreach (MyRichTextBox myRichTextBox in _inkCollector.SelectedMyRichTextBoxs)
                        {
                            Command tmc = new TextMoveCommand(myRichTextBox, offsetx, offsety);
                            myRichTextBox.RichTextBox.BorderBrush = null;
                            _inkCollector.CommandStack.Push(tmc);
                        }
                        MoveOrZoom = "";
                        break;

                    case "Zoom":
                        _inkCollector.IsAutoMove = false;
                        StylusPoint curr = new StylusPoint(current.X, current.Y);
                        StylusPoint sta  = new StylusPoint(_startPoint.X, _startPoint.Y);
                        foreach (MyButton myButton in _inkCollector.SelectButtons)
                        {
                            double dist1 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getMyButtonCenter(myButton), curr);
                            double dist2 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getMyButtonCenter(myButton), sta);
                            if (dist2 == 0)
                            {
                                dist2 = 1;
                            }
                            double scaling = dist1 / dist2;
                            _inkCanvas.Cursor = Cursors.Arrow;
                            myButton.TextBoxTime.Background = null;
                            ButtonZoomCommand bmc = new ButtonZoomCommand(myButton, scaling, _inkCollector, myButton.Angle);
                            _inkCollector.CommandStack.Push(bmc);
                        }
                        foreach (MyImage image in _inkCollector.SelectedImages)
                        {
                            double dist1 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getImageCenter(image), curr);
                            double dist2 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getImageCenter(image), sta);
                            if (dist2 == 0)
                            {
                                dist2 = 1;
                            }
                            double scaling = dist1 / dist2;
                            _inkCanvas.Cursor      = Cursors.Arrow;
                            image.Bound.Visibility = Visibility.Collapsed;
                            ImageZoomCommand izc = new ImageZoomCommand(image, scaling);
                            _inkCollector.CommandStack.Push(izc);
                            foreach (ImageConnector connector in image.ConnectorCollection)
                            {
                                connector.adjustConnector();
                            }
                        }
                        MoveOrZoom = "";
                        break;
                    }



                    _inkCollector.SelectButtons.Clear();
                    _inkCollector.SelectedImages.Clear();
                    _inkCollector.SelectedStrokes.Clear();
                    _inkCollector.SelectedMyRichTextBoxs.Clear();
                    SelectedMyGraphics.Clear();
                }

                _inkCanvas.ReleaseMouseCapture();
                _inkCollector.IsAutoMove   = false;
                pressedMouseLeftButtonDown = false;
            }
        }
        public override void _presenter_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
        {
            if (pressedMouseLeftButtonDown)
            {
                if (_startPoint != null)
                {
                    current = e.GetPosition(_inkCanvas);
                    switch (MoveOrZoom)
                    {
                    case "Move":
                        double offsetx = current.X - _prepoint.X;
                        double offsety = current.Y - _prepoint.Y;
                        _inkCollector.IsAutoMove = true;

                        //移动Mybutton
                        foreach (MyButton myButton in _inkCollector.SelectButtons)
                        {
                            myButton.InkFrame._inkCanvas.CaptureMouse();
                            ButtonMoveCommand bmc = new ButtonMoveCommand(myButton, offsetx, offsety, _inkCollector);
                            bmc.execute();
                        }

                        //移动MyImage
                        foreach (MyImage image in _inkCollector.SelectedImages)
                        {
                            ImageMoveCommand imc = new ImageMoveCommand(image, offsetx, offsety);
                            imc.execute();
                            image.adjustBound();
                            foreach (ImageConnector connector in image.ConnectorCollection)
                            {
                                connector.adjustConnector();
                            }
                        }

                        //移动笔迹
                        if (_inkCollector.SelectedStrokes.Count > 0)
                        {
                            foreach (MyStroke myStroke in _inkCollector.SelectedStrokes)
                            {
                                MoveCommand mc = new MoveCommand(myStroke, offsetx, offsety);
                                mc.execute();
                            }
                        }

                        //移动图形
                        if (SelectedMyGraphics.Count > 0)
                        {
                            MyGraphicsMoveCommand mgsmc = new MyGraphicsMoveCommand(SelectedMyGraphics, offsetx, offsety, _inkCollector);
                            mgsmc.execute();
                        }

                        //移动文本
                        foreach (MyRichTextBox myRichTextBox in _inkCollector.SelectedMyRichTextBoxs)
                        {
                            Command tmc = new TextMoveCommand(myRichTextBox, offsetx, offsety);
                            tmc.execute();
                        }
                        break;

                    case "Zoom":

                        _inkCollector.IsAutoMove = false;
                        StylusPoint curr = new StylusPoint(current.X, current.Y);
                        StylusPoint pre  = new StylusPoint(_prepoint.X, _prepoint.Y);

                        foreach (MyButton myButton in _inkCollector.SelectButtons)
                        {
                            double dist1 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getMyButtonCenter(myButton), curr);
                            double dist2 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getMyButtonCenter(myButton), pre);
                            if (dist2 == 0)
                            {
                                dist2 = 1;
                            }
                            double            scaling = dist1 / dist2;
                            ButtonZoomCommand bmc     = new ButtonZoomCommand(myButton, scaling, _inkCollector, myButton.Angle);
                            bmc.execute();
                        }
                        foreach (MyImage image in _inkCollector.SelectedImages)
                        {
                            double dist1 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getImageCenter(image), curr);
                            double dist2 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getImageCenter(image), pre);
                            if (dist2 == 0)
                            {
                                dist2 = 1;
                            }
                            double           scaling = dist1 / dist2;
                            ImageZoomCommand izc     = new ImageZoomCommand(image, scaling);
                            izc.execute();
                            image.adjustBound();
                            foreach (ImageConnector connector in image.ConnectorCollection)
                            {
                                connector.adjustConnector();
                            }
                        }
                        break;
                    }


                    _prepoint = current;
                }
            }
        }
Exemplo n.º 7
0
        public override void _presenter_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
        {
            if (pressedMouseLeftButtonDown)
            {
                if (_startPoint != null)
                {
                    _inkCanvas.CaptureMouse();
                    if (selectedStrokes.Count > 0 || selectedImages.Count > 0 || selectedButtons.Count > 0)
                    {
                        //反馈效果
                        Point  current = e.GetPosition(_inkCanvas);
                        double offsetx = current.X - _prepoint.X;
                        double offsety = current.Y - _prepoint.Y;

                        if (selectedStrokes.Count > 0)
                        {
                            foreach (MyStroke myStroke in selectedStrokes)
                            {
                                MoveCommand mc = new MoveCommand(myStroke, offsetx, offsety);
                                mc.execute();
                            }
                        }
                        if (selectedImages.Count > 0)
                        {
                            foreach (MyImage image in selectedImages)
                            {
                                ImageMoveCommand imc = new ImageMoveCommand(image, offsetx, offsety);
                                imc.execute();
                                image.adjustBound();
                                foreach (ImageConnector connector in image.ConnectorCollection)
                                {
                                    connector.adjustConnector();
                                }
                            }
                        }
                        if (selectedButtons.Count > 0)
                        {
                            foreach (MyButton myButton in selectedButtons)
                            {
                                ButtonMoveCommand bmc = new ButtonMoveCommand(myButton, offsetx, offsety, _inkCollector);
                                bmc.execute();
                                //myButton.updateArrow(_inkCanvas);
                            }
                        }
                        _inkCollector._mainPage.OperatePieMenu.Margin = new System.Windows.Thickness(_inkCollector._mainPage.OperatePieMenu.Margin.Left + offsetx, _inkCollector._mainPage.OperatePieMenu.Margin.Top + offsety, 0, 0);
                        //_inkCollector.BoundSelect.Margin = new System.Windows.Thickness(_inkCollector.BoundSelect.Margin.Left + offsetx, _inkCollector.BoundSelect.Margin.Top + offsety, 0, 0);

                        //OperatePieMenu位置校正,防止出界
                        if (_inkCollector._mainPage.OperatePieMenu.Margin.Top < _inkCanvas.Margin.Top)       //上面
                        {
                            _inkCollector._mainPage.OperatePieMenu.Margin = new Thickness(_inkCollector._mainPage.OperatePieMenu.Margin.Left, 10, 0, 0);
                        }
                        //右边
                        if (_inkCollector._mainPage.OperatePieMenu.Margin.Left > _inkCanvas.Margin.Left + _inkCanvas.ActualWidth - _inkCollector._mainPage.OperatePieMenu.ActualWidth)
                        {
                            _inkCollector._mainPage.OperatePieMenu.Margin = new Thickness(_inkCanvas.Margin.Left + _inkCanvas.ActualWidth - _inkCollector._mainPage.OperatePieMenu.ActualWidth, _inkCollector._mainPage.OperatePieMenu.Margin.Top, 0, 0);
                        }
                        _prepoint = current;
                    }
                }
            }
        }