#pragma once #include "ZxObjWmPoint.h" #include "mGuiPlot_global.h" class M_GUI_PLOT_EXPORT ZxObjWmLine : public ZxObjWmPoint { Q_OBJECT ZX_DECLARE_DYNAMIC public: ZxObjWmLine(); ZxObjWmLine(const QString& sName, ZxSubAxisX* pAxisX, ZxSubAxisY* pAxisY); ~ZxObjWmLine(); public: // 封装 virtual void initTools(); // 击中 virtual bool hitTest(const QPointF& pt); // 具体击中实现的函数,单纯击中,不做选项的改变 // 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 bool calNewPos(QVector& vec, QPointF ptMouse); // 移动位置后,刷新相关的信息,如距离、角度、长度等 virtual bool reCalInfos(); // 0-180,°,90°,120°等等 float getLineAngle(); // 在右侧手工改动数据,刷新数据点,m_pData已经改变,不予考虑 virtual bool freshWmPosBy(QString sPara, float f); protected: virtual QPointF getCenterPos(); virtual void resetBounds(); // 绘制线 virtual bool drawLine(QPainter* painter, QLineF& oLine); // 绘制垂线 virtual bool drawSubLines(QPainter* painter, QLineF& oLine); // 绘制井点 virtual bool drawWellPos(QPainter* painter, QPointF pt); // 绘制选择 virtual bool drawSelStates(QPainter* painter, QLineF& oLine); 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); public: // 得到/设置画笔 QPen getSubPen(void) const; void setSubPen(QPen o); protected: //float m_fSlope; //这是针对特征线时后的斜率值 QPen m_oSubPen; };