123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- #pragma once
- #include "../ShowUnit/HWndUnit.h"
- #include "Common.h"
- #include "VControlObject.h"
- // 扩展属性相关数量
- #define IMAGE_PROPERTY_EX_MAINLINK_COUNT 1
- //#define IMAGE_PROPERTY_EX_SUBGROUPLINK_COUNT 2
- //#define IMAGE_PROPERTY_EX_SUBGROUPLINK2_COUNT 2
- //#define IMAGE_PROPERTY_EX_GROUP_COUNT 2
- // 扩展属性的组名
- #define IMAGE_PROPERTY_EX_NAME "图像"
- #define IMAGE_PROPERTY_EX_MAINLINK_NAME "图像链接"
- #define IMAGE_PROPERTY_EX_REFRESHLINK_NAME "显示刷新链接"
- // 组1
- #define IMAGE_PROPERTY_EX_GROUP_NAME "图层"
- #define IMAGE_PROPERTY_EX_SUBGROUP_NAME "图层数据"
- #define IMAGE_PROPERTY_EX_LINK1_NAME "图层链接"
- #define IMAGE_PROPERTY_EX_LINK2_NAME "图层状态链接"
- // 杂项
- #define IMAGE_PROPERTY_EX_HOBJECT_COLOR_NAME "图层颜色"
- // #define IMAGE_PROPERTY_EX_HOBJECT_TRANSP_NAME "图层透明度"
- #define IMAGE_PROPERTY_EX_LINEWIDTH_NAME "图层线宽"
- // 组2
- #define IMAGE_PROPERTY_EX_GROUP2_NAME "文本"
- #define IMAGE_PROPERTY_EX_SUBGROUP2_NAME "文本数据"
- #define IMAGE_PROPERTY_EX_LINK3_NAME "文本链接"
- #define IMAGE_PROPERTY_EX_LINK4_NAME "文本状态链接"
- // 杂项
- #define IMAGE_PROPERTY_EX_HTUPLE_COLOR_NAME "文本颜色"
- #define IMAGE_PROPERTY_EX_HTUPLE_PT_NAME "文本坐标"
- #define IMAGE_PROPERTY_EX_HTUPLE_SIZE_NAME "文本尺寸"
- // 组3 (无状态)
- #define IMAGE_PROPERTY_EX_GROUP3_NAME "显示"
- #define IMAGE_PROPERTY_EX_SUBGROUP3_NAME "显示数据"
- #define IMAGE_PROPERTY_EX_LINK5_NAME "显示链接"
- // 杂项
- #define IMAGE_PROPERTY_EX_DISPLAY_COLOR_NAME "显示颜色"
- // 组4 (无状态)
- #define IMAGE_PROPERTY_EX_GROUP4_NAME "字符"
- #define IMAGE_PROPERTY_EX_SUBGROUP4_NAME "字符数据"
- #define IMAGE_PROPERTY_EX_LINK6_NAME "字符链接"
- // 杂项
- #define IMAGE_PROPERTY_EX_STRING_COLOR_NAME "字符颜色"
- #define IMAGE_PROPERTY_EX_STRING_PT_NAME "字符坐标"
- #define IMAGE_PROPERTY_EX_STRING_SIZE_NAME "字符尺寸"
- // 组5 (无状态,无杂项)
- #define IMAGE_PROPERTY_EX_GROUP5_NAME "存储"
- #define IMAGE_PROPERTY_EX_SUBGROUP5_NAME "存储相关"
- #define IMAGE_PROPERTY_EX_LINK7_NAME "名称链接"
- #define IMAGE_PROPERTY_EX_LINK8_NAME "路径链接"
- #define IMAGE_PROPERTY_EX_LINK9_NAME "状态链接"
- // 杂项
- #define IMAGE_PROPERTY_EX_SACVE_IMG_NAME "启用保存原图"
- #define IMAGE_PROPERTY_EX_SAVE_DUMP_NAME "启用保存截图"
- #define IMAGE_PROPERTY_EX_EXE_STATE_NAME "启用状态判断"
- #define IMAGE_PROPERTY_EX_SAVE_MODE_NAME "存储模式"
- #define IMAGE_PROPERTY_EX_BUFFER_SIZE_NAME "缓存大小"
- #define IMAGE_PROPERTY_EX_FREE_TIME_NAME "空闲时间"
- // Obj数量的属性名称
- #define IMAGE_OBJ_COUNT_NAME "objCount"
- // Tuple数量的属性名称
- #define IMAGE_MSG_COUNT_NAME "tupleCount"
- // Disp数量的属性名称
- #define IMAGE_DISPLAY_COUNT_NAME "displayCount"
- // String数量的属性名称
- #define IMAGE_STRING_COUNT_NAME "stringCount"
- // HObject属性子分组编号
- #define GROUP_INDEX_HOBJECT 0
- // HTuple属性子分组的编号
- #define GROUP_INDEX_HTUPLE 1
- // Display属性子分组的编号
- #define GROUP_INDEX_DISPLAY 2
- // String属性子分组的编号
- #define GROUP_INDEX_STRING 3
- // Save属性子分组的编号
- #define GROUP_INDEX_SAVE 4
- // 默认数值
- //j #define DEFAULT_TRANSPARENCY 0.0
- #define IMAGE_DEFAULT_LINEWIDTH 1
- #define IMAGE_DEFAULT_X 10
- #define IMAGE_DEFAULT_Y 10
- #define IMAGE_DEFAULT_SIZE 5
- class VImageControl : public HWndUnit, public VControlObject
- {
- Q_OBJECT;
- //// 设置控件属性表
- //Q_PROPERTY(bool enable READ getEnable WRITE setEnable);
- Q_PROPERTY(QString title READ getText WRITE setText)
- Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry)
- // 图层属性
- Q_PROPERTY(int objCount READ getHObjectCount WRITE setHObjectCount);
- // 文本属性
- Q_PROPERTY(int tupleCount READ getHTupleCount WRITE setHTupleCount);
- // 显示属性
- Q_PROPERTY(int displayCount READ getDisplayCount WRITE setDisplayCount);
- // String属性
- Q_PROPERTY(int stringCount READ getStringCount WRITE setStringCount);
- public:
- VImageControl(
- QWidget* parent,
- const QPoint& pos,
- const QSize& size,
- CONTROL_PROPERTY* pProperty = nullptr,
- CONTROL_PROPERTY_EX* pPropertyEx = nullptr,
- bool bStartSaveThread = false
- );
- ~VImageControl();
- // 属性的实现函数
- //void setEnable(const bool enable);
- void setText(const QString& title);
-
- // 设置HObject数量
- void setHObjectCount(const int& count);
- // 获取HObject数量
- int getHObjectCount();
- // 设置HTuple数量
- void setHTupleCount(const int& count);
- // 获取HTuple数量
- int getHTupleCount();
- // 设置Display数量
- void setDisplayCount(const int& count);
- // 获取Display数量
- int getDisplayCount();
- // 设置String数量
- void setStringCount(const int& count);
- // 获取Display数量
- int getStringCount();
- // 重绘图像(图像+图层+文本)
- void redraw();
- // 调整块属性数量(虚函数)
- virtual void updateExPropertyCount(const int fixCount, const QString& strPropName);
- // 修改扩展属性(虚函数)
- virtual void changeExProperties(QString strValueTitle, const QVariant& newValue);
- // 更新图像数据
- void updateImageFromVariables(const RUNTIME_SYNC_VARS& vars);
- // 更新图层线宽
- void updateLineWidth(const int lineWidth, const int index);
- // 更新图层颜色
- void updateHObjectColor(const QColor newColor, const int index);
- // 更新文本颜色
- void updateHTupleColor(const QColor newColor, const int index);
- // 更新图层颜色
- void updateDisplayColor(const QColor newColor, const int index);
- // 更新字符颜色
- void updateStringColor(const QColor newColor, const int index);
- // 更新文本坐标
- void updateHTuplePt(const QPoint newPt, const int index);
- // 更新文本尺寸
- void updateHTupleSize(const int newSize, const int index);
- // 更新字符坐标
- void updateStringPt(const QPoint newPt, const int index);
- // 更新字符尺寸
- void updateStringSize(const int newSize, const int index);
- // 更新是否存图
- void updateSaveImage(const bool bEnable);
- // 更新是否转储窗口
- void updateDumpWindow(const bool bEnable);
- // 更新是否使用状态判断
- void updateExeState(const bool bEnable);
- // 更新存储模式
- void updateSaveMode(const int nMode);
- // 更新缓冲区大小
- void updateBufferSize(const int nMode);
- // 更新空闲时间
- void updateFreeTime(const int nMode);
- // 启动 存储线程
- void startSaveThread();
- protected:
- void paintEvent(QPaintEvent*);
- private:
- // 初始化扩展属性
- void initPropertyEx();
- // 初始化子属性组
- void initSubGroup(PROPERTY_EX_SUBGROUP& subGroup, int nIndex, int nSubGroupID);
- // 初始化一个扩展属性组
- void initSubGroupHObject(PROPERTY_EX_SUBGROUP& subGroup, int nIndex);
- // 初始化一个扩展属性组2
- void initSubGroupHTuple(PROPERTY_EX_SUBGROUP& subGroup, int nIndex);
- // 初始化一个扩展属性组3
- void initSubGroupDisplay(PROPERTY_EX_SUBGROUP& subGroup, int nIndex);
- // 初始化一个扩展属性组4
- void initSubGroupString(PROPERTY_EX_SUBGROUP& subGroup, int nIndex);
- // 初始化一个扩展属性组5
- void initSubGroupSave(PROPERTY_EX_SUBGROUP& subGroup, int nIndex);
- // 设置图像(单个)
- void ShowImage(HImage image);
- // 设置HObject(可多个)
- void ShowObj(
- HObject obj,
- QColor color = qRgb(255, 0, 0),
- int nLineWidth = IMAGE_DEFAULT_LINEWIDTH
- );
- // 设置文本(可多个)
- void ShowMsg(
- HTuple msg,
- QColor color = qRgb(0, 255, 0),
- QPoint pt = QPoint(IMAGE_DEFAULT_X, IMAGE_DEFAULT_Y),
- int nSize = IMAGE_DEFAULT_SIZE
- );
- // 刷新图像
- void Refresh();
- // 生成一个随机的HObject供预览使用
- HObject genRandomHObject();
- // 生成一个随机的Tuple供预览使用
- HTuple genRandomHTuple();
- private:
- // 用于绘制的图形单元
- HImage m_Image;
- // HObject
- QVector<HObject> m_HObjects;
- // int
- QVector<int> m_HObjectsStatus;
- // HTuple
- QVector<HTuple> m_HTuples;
- // int
- QVector<int> m_HTuplesStatus;
- // 默认颜色集合
- QVector<QColor> m_defaultColors;
- // Display
- QVector<HObject> m_Dsiplays;
- // String
- QVector<QString> m_String;
- // //用来在显示控件内部存图的路径
- QString m_strFileName;
- QString m_strFilePath;
- //根据此执行状态,确定写入的图片存到 ok 还是 ng文件夹
- int m_nExecuteState;
- private:
- QThreadPool m_SaveThreadPool;
- public:
- QVector<SAVE_IMG> m_SaveImages;
- int m_nThreadState;
- };
- // Save的执行线程体
- class _SaveThread : public QObject, public QRunnable
- {
- Q_OBJECT
- public:
- _SaveThread(VImageControl* pImageControl)
- {
- this->m_pImageControl = pImageControl;
- };
- ~_SaveThread() {};
- protected:
- // 线程函数
- virtual void run();
- private:
- VImageControl* m_pImageControl;
- };
|