drawtool.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #pragma once
  2. #include "preheader.h"
  3. #include "MainPaintScenee.h"
  4. #include "GraphicsRectItem.h"
  5. #include "GraphicsTextItem.h"
  6. #include "GraphicsPixmapItem.h"
  7. #include "GraphicsPathItem.h"
  8. #include "GraphicsArrowItem.h"
  9. #include "GraphicsLineItem.h"
  10. QT_BEGIN_NAMESPACE
  11. class QGraphicsScene;
  12. class QGraphicsSceneMouseEvent;
  13. class QMenu;
  14. class QPointF;
  15. class QGraphicsLineItem;
  16. class QFont;
  17. class QGraphicsTextItem;
  18. class QColor;
  19. class QAbstractGraphicsShapeItem;
  20. class PaintView;
  21. QT_END_NAMESPACE
  22. class MainPaintScene;
  23. class GraphicsItem;
  24. class DrawTool
  25. {
  26. public:
  27. DrawTool( DrawBaseShape shape =DrawBaseShape::selection );
  28. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event, MainPaintScene * scene ) ;
  29. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  30. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  31. virtual void setPicture(QString path=""){}
  32. void setCurrentColor(QColor color)
  33. {
  34. _mColor =color;
  35. }
  36. QColor _mColor;
  37. DrawBaseShape m_drawShape;
  38. static DrawTool * findTool( DrawBaseShape drawShape );
  39. static QList<DrawTool*> c_tools;
  40. static QPointF c_down;
  41. static quint32 c_nDownFlags;
  42. static QPointF c_last;
  43. static DrawBaseShape c_drawShape;
  44. };
  45. class SelectTool : public DrawTool
  46. {
  47. public:
  48. SelectTool();
  49. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  50. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  51. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  52. QSizeF m_lastSize;
  53. QGraphicsPathItem * dashRect;
  54. QGraphicsLineItem * dashLine;
  55. bool m_hoverSizer;
  56. };
  57. class RotationTool : public DrawTool
  58. {
  59. public:
  60. RotationTool();
  61. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  62. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  63. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  64. qreal lastAngle;
  65. QGraphicsPathItem * dashRect;
  66. };
  67. class ImageTool : public DrawTool
  68. {
  69. public:
  70. ImageTool(DrawBaseShape drawShape);
  71. virtual void setPicture(QString path="");
  72. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  73. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  74. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  75. GraphicsPixmapItem * item;
  76. QString _imgPath;
  77. };
  78. class RectTool : public DrawTool
  79. {
  80. public:
  81. RectTool(DrawBaseShape drawShape);
  82. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  83. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  84. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  85. GraphicsRectItem * item;
  86. };
  87. // 笔
  88. class PenPathTool : public DrawTool
  89. {
  90. public:
  91. PenPathTool(DrawBaseShape drawShape);
  92. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  93. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  94. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  95. QGraphicsPathItem * item;
  96. QPainterPath *_path;
  97. bool isDrawing; //绘制中
  98. };
  99. //线段
  100. class LineTool : public DrawTool
  101. {
  102. public:
  103. LineTool(DrawBaseShape drawShape);
  104. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  105. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  106. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  107. GraphicsLineItem * item;
  108. bool isDrawing; //绘制中
  109. };
  110. //箭头
  111. class ArrowItem : public DrawTool
  112. {
  113. public:
  114. ArrowItem(DrawBaseShape drawShape);
  115. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  116. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  117. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  118. GraphicsArrowItem * item;
  119. bool isDrawing;
  120. };
  121. // 文本
  122. class TextTool : public DrawTool
  123. {
  124. public:
  125. TextTool(DrawBaseShape drawShape);
  126. virtual void mousePressEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  127. virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene ) ;
  128. virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event , MainPaintScene * scene );
  129. GraphicsTextItem *textItem;
  130. };