#pragma once #include "ZxObjBase.h" // 指北针图元 class I_PLOTCURVE_T_EXPORT ZxObjCompass : public ZxObjBase { Q_OBJECT ZX_DECLARE_DYNAMIC public: ZxObjCompass(); ZxObjCompass(const QString& sName, ZxSubAxisX* pAxisX, ZxSubAxisY* pAxisY); ~ZxObjCompass(); // 初始化 virtual void init(const QString& sName, ZxSubAxisX* pAxisX, ZxSubAxisY* pAxisY); // 具体击中实现的函数,单纯击中,不做选项的改变 // nOption用int是因为Rect类的击中选项不一致 // nOption为负值,表示未击中,此时返回false virtual bool _runHitTest(const QPointF& pt, int& nOption, int& nSubIndex); // 击中后,ButtonUp后的处理 // pt1:鼠标Down点,pt2:鼠标Up点 virtual bool runMove(const QPointF& pt1, const QPointF& pt2); // 封装 virtual void initTools(); virtual void resetOthers(); virtual QRectF getBounds4Update(); // 重新计算位置相关 void recalPos(); public: virtual void paintBack(QPainter* painter, const ZxPaintParam& param); virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); virtual void onLoadTempl(ZxSerializer* ser); virtual void onSaveTempl(ZxSerializer* ser); virtual void fillPtyPano(IxPtyPano* sheet); protected: // 绘制标签 void paintLabel(QPainter* painter,QPointF pt, QString sLabel); public: // 默认显示长度(长宽一致) void setCpSize(double wh); double getCpSize() const; // 位置 int getCpPos(); void setCpPos(int n);//参见定义:RectBoundPos protected: double m_dCpSize; //默认的高度 // 相对于全图Plot的位置 RectBoundPos m_oCpPos; };