中国象棋控件 2.0.15
载入中...
搜索中...
未找到
FrmChineseChess.h
1// 作者:康林 <kl222@126.com>
2
3#ifndef FRMCHINESECHESS_H
4#define FRMCHINESECHESS_H
5
6#include <QWidget>
7#include <QImage>
8#include <QPainter>
9#include <QDateTime>
10#include <QTranslator>
11
12#include "ChineseChess.h"
13#include "chinesechessqt_export.h"
14
15namespace Ui {
17}
18
25class CHINESECHESSQT_EXPORT CFrmChineseChess
26 : public QWidget, public CChineseChess
27{
28 Q_OBJECT
29 Q_PROPERTY(QString RedName READ GetRedName WRITE SetRedName)
30 Q_PROPERTY(QString BlackName READ GetBlackName WRITE SetBlackName)
31 Q_PROPERTY(QDateTime StartTime READ GetStartTime WRITE SetStartTime)
32 Q_PROPERTY(QDateTime EndTime READ GetEndTime WRITE SetEndTime)
33
34public:
35 explicit CFrmChineseChess(QWidget *parent = nullptr);
36 virtual ~CFrmChineseChess() override;
37
39
44 static int InitResource(const QString szLanguage);
46 static int CleanResource();
48
51
53 QDateTime GetStartTime();
54 int SetStartTime(const QDateTime &t);
55 QDateTime GetEndTime();
56 int SetEndTime(const QDateTime &t);
57 QString GetRedName();
58 int SetRedName(const QString &name);
59 QString GetBlackName();
60 int SetBlackName(const QString &name);
61
63
64 void AboutBox();
65
66protected:
67 virtual void mouseReleaseEvent(QMouseEvent *event) override;
68 virtual void paintEvent(QPaintEvent *event) override;
69 virtual void resizeEvent(QResizeEvent *event) override;
70
71protected:
72 virtual int onPromptSound(PROMPT_SOUND sound) override;
73 virtual int onPromptMessage(CGoRule::ENUM_ReturnValue val) override;
74
75 virtual int onCleanPrompt(int i, int j) override;
76 virtual int onDrawPrompt(int i, int j) override;
77 virtual int onGoChess(int i, int j, CPiece::ENUM_QiZi chess) override;
78
79Q_SIGNALS:
80 void sigGoChess(int i, int j, CPiece::ENUM_QiZi chess);
81
82private:
83 Ui::CFrmChineseChess *ui;
84
88
91
93 //CPictureHolder m_QiPangPictureHolder; //棋盘背景图片的CPictureHolder对象
94
97
98 QImage m_RedShuai;
99 QImage m_RedShi;
100 QImage m_RedXiang;
101 QImage m_RedMa;
102 QImage m_RedChe;
103 QImage m_RedBing;
104 QImage m_RedPao;
105
107 QImage m_BlackShi;
109 QImage m_BlackMa;
110 QImage m_BlackChe;
111 QImage m_BlackBing;
112 QImage m_BlackPao;
113
115
118
119 QImage m_Chu;
120 QImage m_He;
121 QImage m_Han;
122 QImage m_Jie;
123 QImage m_KL;
124
126
128 enum ENUM_ConvertCoordinate { XYToIJ, IJToXY };
129 bool ConvertCoordinate(long *x, long *y, int *i, int *j, ENUM_ConvertCoordinate eCC = XYToIJ);
130 bool SetQiPang(int width, int height);
131
133 enum ENUM_XINWEI { XinWei, Left_XinWei, Right_XinWei };
134 // 画星位
135 void DrawXinWei(QPainter *pPainter, int i, int j, ENUM_XINWEI xinwei = XinWei);
136 // 画提示框
137 bool DrawTiShiBox(QPainter *pPainter, int i, int j);
138 int DrawQiZi(QPainter *pPainter, int i, int j, CPiece::ENUM_QiZi eQiZi);
139 void DrawQiPang(QPainter *pPainter, QRect rect);
140 int DrawPicture(QPainter *pPainter, int i, int j, QImage image, bool CHHJKL = false);
141 // 在指定位置绘图
142 int DrawImage(QPainter *pPainter, QRect rect, QImage image);
143 // 设置 QImage 透明
144 int SetTransparentImage(QImage &image, const QColor& col = QColor(255, 255, 255));
145 // 设置 Pixmap 透明
146 int SetTransparentPixmap(QPixmap &pixmap, const QColor &col = QColor(255, 255, 255));
147};
148
149#endif // FRMCHINESECHESS_H
中国象棋类
PROMPT_SOUND
提示音
virtual int onPromptMessage(CGoRule::ENUM_ReturnValue val)=0
提示错误消息
virtual int onGoChess(int i, int j, CPiece::ENUM_QiZi chess)=0
走棋事件
virtual int onDrawPrompt(int i, int j)=0
画提示框
virtual int onCleanPrompt(int i, int j)=0
清除提示框
中国象棋窗体,完成中国象棋的界面
QImage m_BlackXiang
黑相
QImage m_BlackShuai
黑帅
QImage m_BlackBing
黑兵
QImage m_KL
版本图片
QImage m_RedShuai
红帅
int m_QiPangStartX
棋盘的开始横坐标
ENUM_XINWEI
棋盘星位
QImage m_RedMa
红马
QColor m_TiShiBoxColor
提示框的颜色
QImage m_BlackPao
黑炮
QImage m_BlackChe
黑车
QImage m_BlackMa
黑马
QImage m_RedShi
红仕
QImage m_RedXiang
红相
QImage m_RedChe
红车
QImage m_RedPao
红炮
QImage m_RedBing
红兵
QColor m_QiPangColor
棋盘格的颜色
QImage m_BlackShi
黑仕
int m_QiPangDistance
棋盘格的距离
ENUM_ConvertCoordinate
坐标转换
QImage m_QiPangPicture
棋盘背景图片
int m_QiPangStartY
棋盘的开始横坐标
enum CPiece::_ENUM_QiZi ENUM_QiZi
棋子枚举值 四个位表示棋子,最左1位表示颜色