Files
HPPA/HPPA/ImageViewer.h
2026-04-02 10:34:57 +08:00

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