12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #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
|