#pragma once #include "nmDefines.h" #include "nmPlot_global.h" #include "nmObjBase.h" #include "ZxPlot.h" #include "nmDataRegionMark.h" class NM_PLOT_EXPORT nmObjRegionMark : public nmObjBase { Q_OBJECT ZX_DECLARE_DYNAMIC public: nmObjRegionMark(); nmObjRegionMark(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY, \ int RegionMarkCount); ~nmObjRegionMark(); //初始化 virtual void init(const QString& sName, \ ZxSubAxisX* pAxisX, \ ZxSubAxisY* pAxisY) override; //初始化工具 virtual void initTools() override; // 设置图元对象的属性标志 virtual void initFlags() override; public: // 击中 virtual bool hitTest(const QPointF& pt) override; // 具体击中实现的函数,单纯击中,不做选项的改变 // nOption用int是因为Rect类的击中选项不一致 // nOption为负值,表示未击中,此时返回false virtual bool _runHitTest(const QPointF& pt, \ int& nOption, int& nSubIndex) override; // 击中后,ButtonUp后的处理 // pt1:鼠标Down点,pt2:鼠标Up点 virtual bool runMove(const QPointF& pt1, const QPointF& pt2) override; // 创建后被调用 virtual void afterCreated() override; // 删除区域标记数据对象 virtual void removeData() override; public: virtual void paintBack(QPainter* painter, \ const ZxPaintParam& param) override; // 属性填充内容 virtual void fillPtyPano(IxPtyPano* sheet) override; // 成果序列化 virtual void onSerialize(ZxSerializer* ser) override; virtual void onDeserialize(ZxSerializer* ser) override; // 模版处理(从道理上讲,模版处理与成果序列化机制完全一致) // 但此处放开是为了调用方更灵活的控制 virtual void onLoadTempl(ZxSerializer* ser) override; virtual void onSaveTempl(ZxSerializer* ser) override; public: // 填充背景颜色 QColor getBackgrdColor() const; void setBackgrdColor(QColor color); // 根据索引生成颜色 QColor generateColor(int index); void setColorIndex(int newIndex); int getColorIndex() const; void setResevoirType(int newResevoirType); int getResevoirType(); void setComKr(double newComkr); double getComKr(); void setComW(double newComW); double getComW(); void setNetToGross(double newNetToGross); double getNetToGross(); void setSelectRegion(bool select); bool getSelectRegion() const; nmDataRegionMark* getRegionMarkData() const; public slots: // 图元状态改变 void onObjVisibleChanged(bool bIsVisible); private: bool m_bSelectRegion; int m_iColorIndex; //颜色索引 QColor m_clrBackgrd;//填充颜色 nmDataRegionMark* m_regionMarkData; QPixmap m_icon; };