ToolPolygonLine.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using PaintDotNet.Annotation.Enum;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. namespace PaintDotNet.Annotation.Label
  5. {
  6. /// <summary>
  7. /// 标注->曲线->折线
  8. /// </summary>
  9. public class ToolPolygonLine : ToolObject
  10. {
  11. private static Cursor cursor = new Cursor(PdnResources.GetResourceStream("Cursors.AnnotationPencil.cur"));
  12. private static DrawPolygonLine newPolygon;
  13. /// <summary>
  14. /// Left nouse button is pressed
  15. /// </summary>
  16. /// <param name="drawArea"></param>
  17. /// <param name="e"></param>
  18. public static void OnMouseDown(ISurfaceBox drawArea, MouseEventArgs e)
  19. {
  20. if (e.Button == MouseButtons.Left)
  21. {
  22. //在点标记和数字标记里面能单独存在
  23. /**
  24. Point p = GetEventPointInArea(drawArea, e);
  25. if (newPolygon == null)
  26. {
  27. newPolygon = new DrawPolygonLine(p.X, p.Y);
  28. AddNewObject(drawArea, newPolygon);
  29. }
  30. else
  31. {
  32. newPolygon.setNextPoint(p);
  33. }
  34. **/
  35. Point p = GetEventPointInArea(drawArea, e.Location);
  36. if (newPolygon == null)
  37. {
  38. newPolygon = new DrawPolygonLine(drawArea, p.X, p.Y);
  39. newPolygon.ISurfaceBox = drawArea;
  40. AddNewObject(drawArea, newPolygon);
  41. }
  42. else
  43. {
  44. newPolygon.setNextPoint(p);
  45. }
  46. drawArea.Refresh();
  47. }
  48. else
  49. {
  50. OnMouseNotLeftDown(drawArea, newPolygon);
  51. newPolygon = null;
  52. if (!drawArea.ContinuousDrawingLabel())
  53. {
  54. drawArea.ActiveTool = DrawToolType.Pointer;
  55. }
  56. OnMouseUpTwo(drawArea, e);
  57. }
  58. }
  59. /// <summary>
  60. /// 目前设计的交互形式是左键点击
  61. /// 所以鼠标移动什么都不做
  62. /// 如果交互形式改变,再说
  63. /// </summary>
  64. /// <param name="drawArea"></param>
  65. /// <param name="e"></param>
  66. public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e)
  67. {
  68. if (newPolygon != null)
  69. {
  70. Point p = GetEventPointInArea(drawArea, e.Location);
  71. int count = newPolygon.pointArray.Count;
  72. newPolygon.pointArray[count - 1] = p;
  73. drawArea.Refresh();
  74. }
  75. }
  76. /// <summary>
  77. /// 覆盖父类的鼠标抬起事件,什么都不做
  78. /// </summary>
  79. /// <param name="drawArea"></param>
  80. /// <param name="e"></param>
  81. public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e)
  82. {
  83. }
  84. public static void OnMouseClick(ISurfaceBox surfacebox, MouseEventArgs e)
  85. {
  86. }
  87. /// <summary>
  88. /// 鼠标左键双击
  89. /// </summary>
  90. /// <param name="drawArea"></param>
  91. /// <param name="e"></param>
  92. public static void OnMouseLeftDoubleClick(ISurfaceBox surfacebox, MouseEventArgs e)
  93. {
  94. }
  95. /// <summary>
  96. /// 删除按键
  97. /// </summary>
  98. /// <param name="surfacebox"></param>
  99. /// <param name="e"></param>
  100. public static void OnDelKeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
  101. {
  102. }
  103. /// <summary>
  104. /// 删除划痕处理&污迹处理选择区域的痕迹
  105. /// </summary>
  106. /// <param name="surfacebox"></param>
  107. /// <param name="e"></param>
  108. public static void OnDel2KeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
  109. {
  110. }
  111. /// <summary>
  112. /// 清空全部时调用该方法,将可能未绘制完的对象清空
  113. /// </summary>
  114. public static void beginWithNewObject()
  115. {
  116. newPolygon = null;
  117. }
  118. }
  119. }