public void InkCanvas_Gesture(object sender, InkCanvasGestureEventArgs e) { ReadOnlyCollection<GestureRecognitionResult> gestureResults = e.GetGestureRecognitionResults(); Rect bound = e.Strokes.GetBounds(); System.Drawing.Rectangle rectangleBound = ConvertClass.getInstance().RectToRectangle(bound); if (gestureResults[0].RecognitionConfidence == RecognitionConfidence.Strong) { switch (gestureResults[0].ApplicationGesture) { case ApplicationGesture.ScratchOut: foreach (MyButton myButton in _inkFrame.InkCollector.Sketch.MyButtons) { Rect rectMyButton=new Rect(new Point(myButton.Left,myButton.Top),new Point(myButton.Left+myButton.Width,myButton.Top+myButton.Height)); if (MathTool.getInstance().isHitRects(e.Strokes.GetBounds(), rectMyButton) == true) { DeleteButtonCommand dbc = new DeleteButtonCommand(_inkFrame.InkCollector, myButton,_videoList); dbc.execute(); InkCollector.CommandStack.Push(dbc); } } foreach (MyArrow myArrow in _inkFrame.InkCollector.Sketch.MyArrows) { Rect rectMyButton = new Rect(myArrow.StartPoint,myArrow.EndPoint); if (MathTool.getInstance().isHitRects(e.Strokes.GetBounds(), rectMyButton) == true) { Command dac = new DeleteArrowCommand(_inkFrame.InkCollector, myArrow); dac.execute(); InkCollector.CommandStack.Push(dac); } } break; case ApplicationGesture.Down: if (downcount == 1) { getKeyFramesInGivenVideoClip(_inkFrame.InkCollector.Sketch.MyButtons[0].VideoPath.Substring(8), (int)_inkFrame.InkCollector.Sketch.MyButtons[0].TimeEnd, (int)_inkFrame.InkCollector.Sketch.MyButtons[1].TimeStart); } else if (downcount == 0) { getKeyFramesInGivenVideoClip(_inkFrame.InkCollector.Sketch.MyButtons[0].VideoPath.Substring(8), (int)_inkFrame.InkCollector.Sketch.MyButtons[5].TimeEnd, (int)_inkFrame.InkCollector.Sketch.MyButtons[6].TimeStart); } else if (downcount == 2) { getKeyFramesInGivenVideoClip(_inkFrame.InkCollector.Sketch.MyButtons[0].VideoPath.Substring(8), (int)_inkFrame.InkCollector.Sketch.MyButtons[6].TimeEnd, (int)_inkFrame.InkCollector.Sketch.MyButtons[7].TimeStart); InkCollector.Mode = InkMode.VideoPlay; } //else if (downcount == 3) //{ // getKeyFramesInGivenVideoClip(_inkFrame.InkCollector.Sketch.MyButtons[0].VideoPath.Substring(8), // (int)_inkFrame.InkCollector.Sketch.MyButtons[8].TimeEnd, // (int)_inkFrame.InkCollector.Sketch.MyButtons[9].TimeStart); //} downcount++; //getKeyFramesInGivenVideoClip(GlobalValues.FilesPath + "/麋鹿王.avi", 0, // 1069000); break; } } }
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++; } } }