- Timestamp:
- 12/21/08 18:42:03 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Visualization/MouseEventListener.cs
r863 r1045 1 1 using System.Drawing; 2 using System.Windows.Forms; 2 3 3 4 namespace HeuristicLab.Visualization { 4 /// <summary> 5 /// Helper class for different OnMouseMove and OnMouseUp implementations. 6 /// </summary> 7 public class MouseEventListener { 8 /// <summary> 9 /// Fired when the MouseMove method was called. 10 /// </summary> 11 public event MouseEventListenerHandler OnMouseMove; 5 public interface IMouseEventListener { 6 void MouseMove(object sender, MouseEventArgs e); 7 void MouseUp(object sender, MouseEventArgs e); 12 8 13 /// <summary> 14 /// Fired when the MouseUp method was called. 15 /// </summary> 16 public event MouseEventListenerHandler OnMouseUp; 9 event MouseEventHandler OnMouseMove; 10 event MouseEventHandler OnMouseUp; 11 } 17 12 18 private Point startPoint;13 public delegate void SetNewClippingAreaHandler(RectangleD newClippingArea); 19 14 20 /// <summary> 21 /// Call this method to fire the OnMouseMove event. 22 /// </summary> 23 /// <param name="actualPoint"></param> 24 public void MouseMove(Point actualPoint) { 15 public delegate void DrawRectangleHandler(Rectangle rectangle); 16 17 public class PanListener : IMouseEventListener { 18 private readonly Rectangle viewPort; 19 private readonly RectangleD clippingArea; 20 private readonly Point startPoint; 21 22 public PanListener(Rectangle viewPort, RectangleD clippingArea, Point startPoint) { 23 this.viewPort = viewPort; 24 this.clippingArea = clippingArea; 25 this.startPoint = startPoint; 26 } 27 28 #region IMouseEventListener Members 29 30 public event SetNewClippingAreaHandler SetNewClippingArea; 31 public event MouseEventHandler OnMouseMove; 32 public event MouseEventHandler OnMouseUp; 33 34 public void MouseMove(object sender, MouseEventArgs e) { 35 PointD worldStartPoint = Transform.ToWorld(startPoint, viewPort, clippingArea); 36 PointD worldActualPoint = Transform.ToWorld(e.Location, viewPort, clippingArea); 37 38 double xDiff = worldActualPoint.X - worldStartPoint.X; 39 double yDiff = worldActualPoint.Y - worldStartPoint.Y; 40 41 RectangleD newClippingArea = new RectangleD(); 42 newClippingArea.X1 = clippingArea.X1 - xDiff; 43 newClippingArea.X2 = clippingArea.X2 - xDiff; 44 newClippingArea.Y1 = clippingArea.Y1 - yDiff; 45 newClippingArea.Y2 = clippingArea.Y2 - yDiff; 46 47 if (SetNewClippingArea != null) { 48 SetNewClippingArea(newClippingArea); 49 } 50 25 51 if (OnMouseMove != null) { 26 OnMouseMove(s tartPoint, actualPoint);52 OnMouseMove(sender, e); 27 53 } 28 54 } 29 55 30 /// <summary> 31 /// Call this method to fire the OnMouseUp event. 32 /// </summary> 33 /// <param name="actualPoint">Actual point of the mouse</param> 34 public void MouseUp(Point actualPoint) { 56 public void MouseUp(object sender, MouseEventArgs e) { 35 57 if (OnMouseUp != null) { 36 OnMouseUp(s tartPoint, actualPoint);58 OnMouseUp(sender, e); 37 59 } 38 60 } 39 61 40 /// <summary> 41 /// Gets or sets the starting point of the mouse. 42 /// </summary> 43 public Point StartPoint { 44 get { return startPoint; } 45 set { startPoint = value; } 46 } 62 #endregion 47 63 } 48 64 49 /// <summary> 50 /// Handler for the MouseEventListener events. 51 /// </summary> 52 /// <param name="startPoint">Starting point of the mouse.</param> 53 /// <param name="actualPoint">Actual point of the mouse.</param> 54 public delegate void MouseEventListenerHandler(Point startPoint, Point actualPoint); 65 public class ZoomListener : IMouseEventListener { 66 private readonly Point startPoint; 67 68 public event DrawRectangleHandler DrawRectangle; 69 70 public ZoomListener(Point startPoint) { 71 this.startPoint = startPoint; 72 } 73 74 #region IMouseEventListener Members 75 76 public event MouseEventHandler OnMouseMove; 77 public event MouseEventHandler OnMouseUp; 78 79 public void MouseMove(object sender, MouseEventArgs e) { 80 Rectangle r = new Rectangle(); 81 Point actualPoint = e.Location; 82 83 if (startPoint.X < actualPoint.X) { 84 r.X = startPoint.X; 85 r.Width = actualPoint.X - startPoint.X; 86 } else { 87 r.X = actualPoint.X; 88 r.Width = startPoint.X - actualPoint.X; 89 } 90 91 if (startPoint.Y < actualPoint.Y) { 92 r.Y = startPoint.Y; 93 r.Height = actualPoint.Y - startPoint.Y; 94 } else { 95 r.Y = actualPoint.Y; 96 r.Height = startPoint.Y - actualPoint.Y; 97 } 98 99 if(DrawRectangle != null) { 100 DrawRectangle(r); 101 } 102 103 if (OnMouseMove != null) { 104 OnMouseMove(sender, e); 105 } 106 } 107 108 public void MouseUp(object sender, MouseEventArgs e) { 109 if (OnMouseUp != null) { 110 OnMouseUp(sender, e); 111 } 112 } 113 114 #endregion 115 } 55 116 }
Note: See TracChangeset
for help on using the changeset viewer.