#pragma once #include "actionitem.h" #include "DrawOperator\rect8ex.h" namespace NAction { class CActionMoveItem : public CActionItem { public: CActionMoveItem(); CActionMoveItem(CSigmaDoc * ppDoc, UINT actionType, const CPositionList& list, REAL* pmatrix); CActionMoveItem(CSigmaDoc * ppDoc, UINT actionType, COne* pOne, REAL* pmatrix); virtual ~CActionMoveItem(void); std::string GetActionName() const override { return typeid(*this).name(); } void SetDC(void* pXyDC); virtual void Undo(void); virtual void Redo(void); void accept(CActionVisitor& visitor) override; friend class BlobSerializer; protected: // 指定的 6 个值组成的 2D 变换矩阵,matrix(a, b, c, d, tx, ty),后面补的注释,大概是这个 REAL matrix[6]{}; void *m_pXyDC = nullptr; private: // 将变换矩阵里面的 x y 转换为真实距离 void ConvertRealDistance(); // 将变换矩阵里面的 x y 转换为屏幕距离 void ConvertScreenDistance(); }; };