using Resources; using System.Drawing; using System.Windows.Forms; namespace SmartCoalApplication.Annotation.Other { /// /// 平移工具(手型) /// public class PanTool : Tool { private static Cursor cursorMouseDown = new Cursor(PdnResources.GetResourceStream("Cursors.PanToolCursorMouseDown.cur")); private static Cursor cursorMouseUp = new Cursor(PdnResources.GetResourceStream("Cursors.PanToolCursor.cur")); private static bool tracking = false; private static Point lastMouseXY; private static int ignoreMouseMove = 0; private static ISurfaceBox surfaceBox; private static bool CanPan() { if (surfaceBox.GetVisibleDocumentRectangleF().Size == surfaceBox.GetDocumentSize()) { return false; } else { return true; } } public static void OnMouseDown(ISurfaceBox drawArea, MouseEventArgs e) { surfaceBox = drawArea; lastMouseXY = new Point(e.X, e.Y); tracking = true; if (CanPan()) { drawArea.Cursor = cursorMouseDown; } else { drawArea.Cursor = null; } } public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e) { surfaceBox = drawArea; if (ignoreMouseMove > 0) { --ignoreMouseMove; } else if (tracking) { Point mouseXY = new Point(e.X, e.Y); Size delta = new Size(mouseXY.X - lastMouseXY.X, mouseXY.Y - lastMouseXY.Y); if (delta.Width != 0 || delta.Height != 0) { PointF scrollPos = drawArea.GetDocumentScrollPositionF(); PointF newScrollPos = new PointF(scrollPos.X - delta.Width, scrollPos.Y - delta.Height); ++ignoreMouseMove; drawArea.SetDocumentScrollPositionF(newScrollPos); lastMouseXY = mouseXY; } } else { if (CanPan()) { drawArea.Cursor = cursorMouseUp; } else { drawArea.Cursor = null; } } } public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e) { surfaceBox = drawArea; if (CanPan()) { drawArea.Cursor = cursorMouseUp; } else { drawArea.Cursor = null; } tracking = false; } public static void OnMouseClick(ISurfaceBox drawArea, MouseEventArgs e) { } /// /// 鼠标左键双击 /// /// /// public static void OnMouseLeftDoubleClick(ISurfaceBox surfacebox, MouseEventArgs e) { } /// /// 删除按键 /// /// /// public static void OnDelKeyDown(ISurfaceBox surfacebox, MouseEventArgs e) { } /// /// 删除划痕处理&污迹处理选择区域的痕迹 /// /// /// public static void OnDel2KeyDown(ISurfaceBox surfacebox, MouseEventArgs e) { } /// /// 清空全部时调用该方法,将可能未绘制完的对象清空 /// public static void beginWithNewObject() { } } }