86 lines
2.0 KiB
C++
86 lines
2.0 KiB
C++
#ifndef MAPCAVAS_H
|
|
#define MAPCAVAS_H
|
|
|
|
#include "QGraphicsView"
|
|
#include "qlabel.h"
|
|
#include <QVector>
|
|
#include "RasterLayer.h"
|
|
|
|
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;
|
|
|
|
// new: set raster layer and refresh map
|
|
void setLayers(RasterLayer* layer);
|
|
void freshmap();
|
|
void freshmap(const RasterLayer::RenderParams& params);
|
|
|
|
RasterLayer* rasterLayer() 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;//显示实时采集到的帧数
|
|
|
|
RasterLayer* m_rasterLayer = nullptr; // associated raster 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<double>, QVector<double>);
|
|
};
|
|
#endif
|