using PaintDotNet.Annotation.Command; using PaintDotNet.Annotation.Enum; using System.Windows.Forms; namespace PaintDotNet.Annotation { /// /// 工具 /// public abstract class ToolObject : Tool { private Cursor cursor; /// /// Tool cursor. /// protected Cursor Cursor { get { return cursor; } set { cursor = value; } } /// /// Left mouse is released. /// New object is created and resized. /// /// /// public static void OnMouseUpTwo(ISurfaceBox surfacebox, MouseEventArgs e) { // TODO ZYH 这里需要处理连续绘制 //surfacebox.ActiveTool = DrawToolType.Pointer; if (surfacebox.GraphicsList!=null && surfacebox.GraphicsList.Count>0) { //重新处理外接矩形,否则会有负值 surfacebox.GraphicsList[0].Normalize(); surfacebox.AddCommandToHistory(new CommandAdd(surfacebox.GraphicsList[0])); //surfacebox.Capture = false; surfacebox.Refresh(); surfacebox.GraphicsList.Dirty = true; } OnMouseUpOne(surfacebox, e); } /// /// Add new object to draw area. /// Function is called when user left-clicks draw area, /// and one of ToolObject-derived tools is active. /// /// /// protected static void AddNewObject(ISurfaceBox drawArea, DrawObject o) { drawArea.GraphicsList.UnselectAll(); o.Selected = true; drawArea.GraphicsList.Add(o); drawArea.GraphicsList.OnSelectChanged(); //drawArea.Capture = true; drawArea.Refresh(); drawArea.SetDirty(); } protected static void RemoveOldObject(ISurfaceBox drawArea, DrawObject o) { drawArea.GraphicsList.RemoveObj(o); drawArea.GraphicsList.OnSelectChanged(); drawArea.ResetUndoManager(); drawArea.Refresh(); drawArea.SetDirty(); } protected static void AddNewObjectForView(ISurfaceBox drawArea, DrawObject o) { drawArea.GraphicsList.UnselectAll(); o.Selected = true; drawArea.GraphicsList.Add(o); //drawArea.GraphicsList.OnSelectChanged(); //drawArea.Capture = true; drawArea.Refresh(); drawArea.SetDirty(); } public static void OnMouseNotLeftDown(ISurfaceBox surfacebox, DrawObject o) { if (surfacebox.ContinuousDrawingLabel() && o == null) { surfacebox.ActiveTool = DrawToolType.Pointer; surfacebox.SetContinuousDrawingLabel(false); } } } }