ToolBinaryConnectionPolygonLine.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using PaintDotNet.Annotation.Enum;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. namespace PaintDotNet.Annotation.Other
  5. {
  6. /// <summary>
  7. /// 二值提取-交互操作-连接-折线(需要绘制图形)
  8. /// </summary>
  9. public class ToolBinaryConnectionPolygonLine : ToolObject
  10. {
  11. private static DrawBinaryConnectionPolygonLine drawObject;
  12. public static void OnMouseDown(ISurfaceBox drawArea, MouseEventArgs e)
  13. {
  14. if (e.Button == MouseButtons.Left)
  15. {
  16. Point p = GetEventPointInArea(drawArea, e.Location);
  17. if (drawObject == null)
  18. {
  19. drawObject = new DrawBinaryConnectionPolygonLine(drawArea, p.X, p.Y);
  20. drawObject.ISurfaceBox = drawArea;
  21. AddNewObject(drawArea, drawObject);
  22. }
  23. else
  24. {
  25. drawObject.setNextPoint(p);
  26. }
  27. drawArea.Refresh();
  28. }
  29. else
  30. {
  31. //删除对象
  32. RemoveOldObject(drawArea, drawObject);
  33. //销毁对象
  34. drawObject = null;
  35. //处理连续绘制
  36. if (!drawArea.ContinuousBinaryAction())
  37. {
  38. drawArea.ActiveTool = DrawToolType.Pointer;
  39. }
  40. OnMouseUpTwo(drawArea, e);
  41. }
  42. }
  43. public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e)
  44. {
  45. }
  46. public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e)
  47. {
  48. //多次直线分割
  49. if (drawObject.pointArray != null && drawObject.pointArray.Count > 1)
  50. {
  51. if (drawObject.startPoint.X != drawObject.endPoint.X
  52. || drawObject.startPoint.Y != drawObject.endPoint.Y)
  53. {
  54. drawArea.BinaryActionConnectionLine(drawObject.startPoint, drawObject.endPoint);
  55. }
  56. }
  57. }
  58. public static void OnMouseClick(ISurfaceBox drawArea, MouseEventArgs e)
  59. {
  60. }
  61. /// <summary>
  62. /// 鼠标左键双击
  63. /// </summary>
  64. /// <param name="drawArea"></param>
  65. /// <param name="e"></param>
  66. public static void OnMouseLeftDoubleClick(ISurfaceBox surfacebox, MouseEventArgs e)
  67. {
  68. }
  69. /// <summary>
  70. /// 删除按键
  71. /// </summary>
  72. /// <param name="surfacebox"></param>
  73. /// <param name="e"></param>
  74. public static void OnDelKeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
  75. {
  76. }
  77. /// <summary>
  78. /// 删除划痕处理&污迹处理选择区域的痕迹
  79. /// </summary>
  80. /// <param name="surfacebox"></param>
  81. /// <param name="e"></param>
  82. public static void OnDel2KeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
  83. {
  84. }
  85. /// <summary>
  86. /// 清空全部时调用该方法,将可能未绘制完的对象清空
  87. /// </summary>
  88. public static void beginWithNewObject()
  89. {
  90. drawObject = null;
  91. }
  92. }
  93. }