ToolTextString.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using PaintDotNet.Annotation.Enum;
  2. using System;
  3. using System.Drawing;
  4. using System.Windows.Forms;
  5. namespace PaintDotNet.Annotation.Label
  6. {
  7. /// <summary>
  8. /// 标注->文本
  9. /// </summary>
  10. public class ToolTextString : ToolObject
  11. {
  12. private static DrawTextString newTextString;
  13. private static ISurfaceBox areaNow;
  14. private static bool isTextBoxAlive = false;
  15. private static RichTextBox lab;
  16. private static Point p;
  17. private static Cursor cursor = new Cursor(PdnResources.GetResourceStream("Cursors.AnnotationRectangle.cur"));
  18. public static void OnMouseDown(ISurfaceBox drawArea, MouseEventArgs e)
  19. {
  20. areaNow = drawArea;
  21. if (e.Button == MouseButtons.Left)
  22. {
  23. if (newTextString == null && !isTextBoxAlive)
  24. {
  25. Point temp = drawArea.GetCalcOriginPoint();
  26. p = GetEventPointInArea(drawArea, e.Location);
  27. lab = new RichTextBox();
  28. lab.LostFocus += new EventHandler(OnTextBoxLostFocus);
  29. lab.Width = 100;
  30. lab.Height = 40;
  31. lab.BackColor = Color.White;
  32. lab.Cursor = Cursors.Default;
  33. lab.Location = new Point(temp.X + (int)(p.X * drawArea.ScaleRatio) + 16, temp.Y+ (int)(p.Y * drawArea.ScaleRatio) + 16);
  34. drawArea.Controls.Add(lab);
  35. lab.Focus();
  36. lab.BringToFront();
  37. isTextBoxAlive = true;
  38. drawArea.Refresh();
  39. }
  40. }
  41. if (e.Button == MouseButtons.Right)
  42. {
  43. if (newTextString == null && isTextBoxAlive)
  44. {
  45. string textStr = lab.Text;
  46. drawArea.Controls.Remove(lab);
  47. newTextString = new DrawTextString(drawArea, p.X, p.Y, textStr);
  48. newTextString.ISurfaceBox = drawArea;
  49. AddNewObject(drawArea, newTextString);
  50. drawArea.Refresh();
  51. //OnMouseNotLeftDown(drawArea, newTextString);
  52. newTextString = null;
  53. isTextBoxAlive = false;
  54. if (!drawArea.ContinuousDrawingLabel())
  55. {
  56. drawArea.ActiveTool = DrawToolType.Pointer;
  57. }
  58. OnMouseUpTwo(drawArea, e);
  59. }
  60. }
  61. }
  62. private static void OnTextBoxLostFocus(object sender, EventArgs e)
  63. {
  64. if(areaNow != null && lab != null)
  65. {
  66. areaNow.Controls.Remove(lab);
  67. newTextString = null;
  68. isTextBoxAlive = false;
  69. if (!areaNow.ContinuousDrawingLabel())
  70. {
  71. OnMouseUpTwo(areaNow, null);
  72. }
  73. }
  74. }
  75. public static void OnMouseMove(ISurfaceBox drawArea, MouseEventArgs e)
  76. {
  77. }
  78. public static void OnMouseUp(ISurfaceBox drawArea, MouseEventArgs e)
  79. {
  80. }
  81. public static void OnMouseClick(ISurfaceBox surfacebox, MouseEventArgs e)
  82. {
  83. }
  84. /// <summary>
  85. /// 鼠标左键双击
  86. /// </summary>
  87. /// <param name="drawArea"></param>
  88. /// <param name="e"></param>
  89. public static void OnMouseLeftDoubleClick(ISurfaceBox surfacebox, MouseEventArgs e)
  90. {
  91. }
  92. /// <summary>
  93. /// 删除按键
  94. /// </summary>
  95. /// <param name="surfacebox"></param>
  96. /// <param name="e"></param>
  97. public static void OnDelKeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
  98. {
  99. }
  100. /// <summary>
  101. /// 删除划痕处理&污迹处理选择区域的痕迹
  102. /// </summary>
  103. /// <param name="surfacebox"></param>
  104. /// <param name="e"></param>
  105. public static void OnDel2KeyDown(ISurfaceBox surfacebox, MouseEventArgs e)
  106. {
  107. }
  108. public static void beginWithNewObject()
  109. {
  110. }
  111. }
  112. }