private Gesture_Event_Showing detectShowingRegister(List<My_Point> points)
 {
     List<My_Point> result = new List<My_Point>();
     if (points.Count > 0)
     {
         for (int i = 0; i < points.Count; i++)
         {
             if (points[i].Life > STATICS.MIN_SHOW_LIFE && points[i].Sender is Card)
             {
                 result.Add(points[i]);
                 for (int m = 0; m < points.Count; m++)
                 {
                     if (i != m && points[i].Sender == points[m].Sender && points[m].Life > STATICS.MIN_SHOW_LIFE)
                     {
                         result.Add(points[m]);
                     }
                 }
                 if (result.Count > 2)
                 {
                     My_Point[] argPoints = result.ToArray();
                     object[] objects = new object[1];
                     objects[0] = argPoints[0].Sender;
                     Gesture_Event_Showing showEvent = new Gesture_Event_Showing();
                     showEvent.Points = argPoints;
                     Gesture_List.addGesture(showEvent);
                     Gesture_Showing_Listener gestureListener = new Gesture_Showing_Listener(this, showEvent);
                     showEvent.Register(objects, argPoints);
                     return showEvent;
                 }
                 else {
                     result.Clear();
                 }
             }
         }
     }
     return null;
 }