ToolObject.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using PaintDotNet.Annotation.Command;
  2. using PaintDotNet.Annotation.Enum;
  3. using System.Windows.Forms;
  4. namespace PaintDotNet.Annotation
  5. {
  6. /// <summary>
  7. /// 工具
  8. /// </summary>
  9. public abstract class ToolObject : Tool
  10. {
  11. private Cursor cursor;
  12. /// <summary>
  13. /// Tool cursor.
  14. /// </summary>
  15. protected Cursor Cursor
  16. {
  17. get
  18. {
  19. return cursor;
  20. }
  21. set
  22. {
  23. cursor = value;
  24. }
  25. }
  26. /// <summary>
  27. /// Left mouse is released.
  28. /// New object is created and resized.
  29. /// </summary>
  30. /// <param name="drawArea"></param>
  31. /// <param name="e"></param>
  32. public static void OnMouseUpTwo(ISurfaceBox surfacebox, MouseEventArgs e)
  33. {
  34. // TODO ZYH 这里需要处理连续绘制
  35. //surfacebox.ActiveTool = DrawToolType.Pointer;
  36. if (surfacebox.GraphicsList!=null && surfacebox.GraphicsList.Count>0)
  37. {
  38. //重新处理外接矩形,否则会有负值
  39. surfacebox.GraphicsList[0].Normalize();
  40. surfacebox.AddCommandToHistory(new CommandAdd(surfacebox.GraphicsList[0]));
  41. //surfacebox.Capture = false;
  42. surfacebox.Refresh();
  43. surfacebox.GraphicsList.Dirty = true;
  44. }
  45. OnMouseUpOne(surfacebox, e);
  46. }
  47. /// <summary>
  48. /// Add new object to draw area.
  49. /// Function is called when user left-clicks draw area,
  50. /// and one of ToolObject-derived tools is active.
  51. /// </summary>
  52. /// <param name="drawArea"></param>
  53. /// <param name="o"></param>
  54. protected static void AddNewObject(ISurfaceBox drawArea, DrawObject o)
  55. {
  56. drawArea.GraphicsList.UnselectAll();
  57. o.Selected = true;
  58. drawArea.GraphicsList.Add(o);
  59. drawArea.GraphicsList.OnSelectChanged();
  60. //drawArea.Capture = true;
  61. drawArea.Refresh();
  62. drawArea.SetDirty();
  63. }
  64. protected static void RemoveOldObject(ISurfaceBox drawArea, DrawObject o)
  65. {
  66. drawArea.GraphicsList.RemoveObj(o);
  67. drawArea.GraphicsList.OnSelectChanged();
  68. drawArea.ResetUndoManager();
  69. drawArea.Refresh();
  70. drawArea.SetDirty();
  71. }
  72. protected static void AddNewObjectForView(ISurfaceBox drawArea, DrawObject o)
  73. {
  74. drawArea.GraphicsList.UnselectAll();
  75. o.Selected = true;
  76. drawArea.GraphicsList.Add(o);
  77. //drawArea.GraphicsList.OnSelectChanged();
  78. //drawArea.Capture = true;
  79. drawArea.Refresh();
  80. drawArea.SetDirty();
  81. }
  82. public static void OnMouseNotLeftDown(ISurfaceBox surfacebox, DrawObject o)
  83. {
  84. if (surfacebox.ContinuousDrawingLabel() && o == null)
  85. {
  86. surfacebox.ActiveTool = DrawToolType.Pointer;
  87. surfacebox.SetContinuousDrawingLabel(false);
  88. }
  89. }
  90. }
  91. }