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++; } }
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; } } }
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; } } } }