using PaintDotNet.Annotation.Enum; using System.Drawing; using System.Windows.Forms; namespace PaintDotNet.Annotation.FieldView { public class ToolViewRectangleEx : ToolObject { private static ViewRectangleEx rect; /// /// 鼠标按下事件 /// /// /// public static void OnMouseDown(ISurfaceBox surfaceBox, MouseEventArgs e) { WorkFlowCreat(surfaceBox, e, EventType.Down); } /// /// 鼠标移动事件 /// /// /// public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e) { WorkFlowCreat(drawArea, e, EventType.Move); drawArea.Refresh(); drawArea.GraphicsList.Dirty = true; } static void Done(ISurfaceBox drawArea) { drawArea.ActiveTool = DrawToolType.Pointer; drawArea.GraphicsList.OnSelectChanged(); drawArea.Refresh(); rect = null; _step = 0; } static void Cancel(ISurfaceBox drawArea) { if (rect != null) { drawArea.GraphicsList.RemoveObj(rect); } Done(drawArea); } static int _step = 0; private static void WorkFlowCreat(ISurfaceBox surfaceBox, MouseEventArgs e, EventType type) { Point p = GetEventPointInArea(surfaceBox, e.Location); if (e.Button == MouseButtons.Right) Cancel(surfaceBox); switch (_step) { case 0: if (e.Button == MouseButtons.Left && type == EventType.Down) { rect = new ViewRectangleEx(p); rect.ISurfaceBox = surfaceBox; rect.combineMode = surfaceBox.GetCombineMode(); AddNewObjectForView(surfaceBox, rect); _step++; } break; case 1: if (e.Button == MouseButtons.Left && type == EventType.Down) { _step++; } else if (type == EventType.Move) { rect.CreatStep(p, _step); } break; case 2: if (e.Button == MouseButtons.Left && type == EventType.Down) { Done(surfaceBox); } else if (type == EventType.Move) { rect.CreatStep(p, _step); } break; } } private enum EventType { Down, Up, Move } #region Useless public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e) { } 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() { } #endregion } }