#ifndef IMAGEVIEW_H #define IMAGEVIEW_H #include <QWidget> #include <QPixmap> #include <QMouseEvent> #include <QGraphicsView> #include "CameraMaterialGroupWnd/MaterialWindow/DraggableLine.h" #include <QRubberBand> class ImageView : public QGraphicsView { Q_OBJECT public: explicit ImageView(QWidget* parent = nullptr); ~ImageView(); //����ͼƬ void setPixmap(const QPixmap& pixmap); void setCurPixmap(const QPixmap& pixmap); //���ñ�� void addRuler(); void cancelRuler(); void setIsDrawing(bool drawing) { m_isDrawing = drawing; } protected: void paintEvent(QPaintEvent* event) override; void mousePressEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override; void mouseReleaseEvent(QMouseEvent* event) override; void wheelEvent(QWheelEvent* event) override; void resizeEvent(QResizeEvent* event) override; void scrollContentsBy(int dx, int dy) override; private: void drawCrosshair(QPainter& painter); private: QGraphicsPixmapItem* m_pixmapItem; QPixmap m_pixmap; QPoint m_lastMousePos; // ��һ������λ�� QPointF m_imageOffset; // ͼƬ��ƫ���� RulerLineItem* m_pRuleLine; QList<RulerLineItem*> m_pRuleLines; bool m_bMouseTranslate; qreal m_minScale; bool m_isDrawing; bool m_curDrawing; QPainterPath m_currentPath; QGraphicsPathItem* m_currentPathItem; QList<QGraphicsPathItem*> m_drawnPaths; QPoint m_rightClickPressPos; bool m_rightButtonPressed; //��� bool m_isCreating; QPointF m_startPos; QGraphicsLineItem* m_pTempLine = nullptr; bool m_bRulerState; void saveImage(); void clearDrawnLines(); }; #endif // IMAGEVIEW_H