示例#1
0
 private void Window_MouseMove(object sender, MouseEventArgs e)
 {
     if (Mouse_Down)
     {
         Point P = e.GetPosition(this);
         Draw_Point(P);
         Temp.Add_Point(P);
     }
 }
示例#2
0
        private void Window_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (!Mouse_Down)
            {
                return;
            }
            Mouse_Down = false;
            //---------------------------------Add the last point to the canvas and screen---------------------------------
            Point P = e.GetPosition(this);

            Draw_Point(P);
            Temp.Add_Point(P);
            //---------------------------------Do the finished work--------------------------------------------------------
            Temp.Finish_Collecting();
            if (!Temp.Finished_Collecting)
            {
                return;
            }
            //--------------------------check if the current gesture should be unioned with the last gesture-----------------------
            if (Screen.Count != 0)
            {
                Mouse_Data REF = Screen[Screen.Count - 1];
                if ((Screen[Screen.Count - 1].Intersect(Temp) || (Screen[Screen.Count - 1].Boundary.Contains(Temp.Center)) && Recognizer.Recognize(ref REF) != "square root"))
                {
                    Mouse_Data T = Screen[Screen.Count - 1];
                    T.Union(Temp);
                    Screen[Screen.Count - 1] = T;
                }
                else
                {
                    RecLast();
                    if (Screen.Last().Label == "horizontal line")
                    {
                        Mouse_Data D = new Mouse_Data(Screen.Last());
                        D.Union(Temp);
                        if (Recognizer.Recognize(ref Temp) == "horizontal line" && Recognizer.Recognize(ref D, false) == "equals")
                        {
                            Screen[Screen.Count - 1] = D;
                            double R = Calculate_Value();
                            Debug.Print(R.ToString());
                            #region Output_Answer
                            Label AnswerBox = new Label();
                            AnswerBox.Content = R.ToString();
                            double L, T;
                            AnswerBox.Margin   = new Thickness(L = Temp.Boundary.X + Temp.Boundary.Width + 10, T = ((Temp.Boundary.Y + Temp.Boundary.Height + D.Boundary.Y + D.Boundary.Height) / 2 - 50), 0, MainCanvas.Height - T - 20);
                            AnswerBox.FontSize = 50;
                            MainCanvas.Children.Add(AnswerBox);
                            #endregion
                        }
                        else
                        {
                            Screen.Add(Temp);
                        }
                    }
                    else
                    {
                        Screen.Add(Temp);
                    }
                }
            }
            else
            {
                Screen.Add(Temp);
            }
        }