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