#ifndef MAPCAVAS_H #define MAPCAVAS_H #include "QGraphicsView" #include "qlabel.h" #include class RasterImageLayer; class MapTool; class Mapcavas : public QGraphicsView { Q_OBJECT public: Mapcavas(QWidget* pParent = NULL); ~Mapcavas(); void DisplayFrameNumber(int frameNumber); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void SetImage(QPixmap *image); bool HasImage(); void ensureSceneVisible(); void updateCrosshair(double sceneX, double sceneY); void removeCrosshair(); void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; void scaling(qreal scaleFactor); void zoomIn(); // 放大 void zoomOut(); // 缩小 void zoom(float scaleFactor); // 缩放 - scaleFactor缩放的比例因子 // 平移速度 void setTranslateSpeed(qreal speed); qreal translateSpeed() const; // 缩放的增量 void setZoomDelta(qreal delta); qreal zoomDelta() const; // set raster image layer and refresh map void setImageLayer(RasterImageLayer* layer); void freshmap(); RasterImageLayer* imageLayer() const; // MapTool management void setMapTool(MapTool* tool); void unsetMapTool(MapTool* tool); MapTool* mapTool() const; protected: QGraphicsScene *m_qtGraphicsScene; private: QGraphicsPixmapItem *m_GraphicsPixmapItemHandle; QLabel *m_framNumberLabel;//显示实时采集到的帧数 RasterImageLayer* m_imageLayer = nullptr; // associated raster image layer MapTool* m_mapTool = nullptr; // current active map tool qreal m_translateSpeed; // 平移速度 qreal m_zoomDelta; // 缩放的增量 bool m_bMouseTranslate; // 平移标识 QPoint m_lastMousePos; // 鼠标最后按下的位置 qreal m_scale; // 缩放值 double m_CrosshairHalfLen = 10.0; QGraphicsLineItem* m_hLine = nullptr; // horizontal line QGraphicsLineItem* m_vLine = nullptr; // vertical line signals: void leftMouseButtonPressed(int, int, QVector, QVector); }; #endif