Qt中国象棋二

您所在的位置:网站首页 瓷砖市场价格行情走势图片最新 Qt中国象棋二

Qt中国象棋二

2024-07-16 05:54:14| 来源: 网络整理| 查看: 265

上次和大家分享了Qt的2D绘图基础知识,这样可以更好地理解象棋中一些关于绘图的程序。这次要和大家分享的则是棋盘与棋子的绘制,也可以说是Qt 2D绘图的一些具体应用。

 

源程序是我在网上找的,而且是下载了好几个,之后会把这些程序融合下。

 

一、 绘制棋盘

主窗体是继承MainWidget的,将棋盘设置为背景图片,到这棋盘就绘制好了。惊喜吧~

640?wx_fmt=png

绘制程序也很少:

//窗口以棋盘图片为大小 QPixmap pixChessBoard(":/image/Resources/image/chessBoard.png"); setFixedSize(pixChessBoard.size()); QPalette palette(this->palette()); palette.setBrush( QPalette::Window,QBrush(pixChessBoard)); this->setPalette(palette);

之后说明下程序中用到的几个宏定义:

#define RECT_WIDTH 55 #define RECT_HEIGHT 56 #define START_X (35 - RECT_WIDTH/2) #define START_Y (45 - RECT_HEIGHT/2)

① RECT_WIDTH 棋盘图片方格的像素宽度,对应下图中1到2的像素距离

② RECT_HEIGHT 棋盘图片方格的像素高度,对应下图中2到3的像素距离

③ 35,45 是棋盘左上角像素坐标,即与1对应

④ START_X,START_Y 计算棋子位置的起点像素坐标,如图4的像素坐标

 

640?wx_fmt=png

 

二、 绘制棋子

 

1. 棋子属性类(Item) 的定义

棋子属性类中主要包括棋子类型,如車、马、相、士、炮、兵、将

棋子颜色                    ,红色、黑色

棋子位置                    ,QPoint 等

Item::Item(ITEM_TYPE t,ITEM_COLOR c,QPoint pt) { m_type = t; m_color = c; m_pt = pt; m_bShow = true; }

 

2. 初始化黑色棋子的逻辑属性

主要是初始化棋子的类型与逻辑位置。

void MainWindow::initItems() { m_items.clear(); //初始化所有黑方棋子 Item item1(ITEM_JU,COLOR_BLACK,QPoint(0,0)); Item item2(ITEM_MA,COLOR_BLACK,QPoint(1,0)); Item item3(ITEM_XIANG,COLOR_BLACK,QPoint(2,0)); Item item4(ITEM_SHI,COLOR_BLACK,QPoint(3,0)); Item item5(ITEM_SHUAI,COLOR_BLACK,QPoint(4,0)); Item item6(ITEM_SHI,COLOR_BLACK,QPoint(5,0)); Item item7(ITEM_XIANG,COLOR_BLACK,QPoint(6,0)); Item item8(ITEM_MA,COLOR_BLACK,QPoint(7,0)); Item item9(ITEM_JU,COLOR_BLACK,QPoint(8,0)); Item item10(ITEM_PAO,COLOR_BLACK,QPoint(1,2)); Item item11(ITEM_PAO,COLOR_BLACK,QPoint(7,2)); Item item12(ITEM_BING,COLOR_BLACK,QPoint(0,3)); Item item13(ITEM_BING,COLOR_BLACK,QPoint(2,3)); Item item14(ITEM_BING,COLOR_BLACK,QPoint(4,3)); Item item15(ITEM_BING,COLOR_BLACK,QPoint(6,3)); Item item16(ITEM_BING,COLOR_BLACK,QPoint(8,3)); m_items.push_back(item1); m_items.push_back(item2); m_items.push_back(item3); m_items.push_back(item4); m_items.push_back(item5); m_items.push_back(item6); m_items.push_back(item7); m_items.push_back(item8); m_items.push_back(item9); m_items.push_back(item10); m_items.push_back(item11); m_items.push_back(item12); m_items.push_back(item13); m_items.push_back(item14); m_items.push_back(item15); m_items.push_back(item16); }

 

3. 绘制棋子

①从图片中切割棋子

资源文件中棋子是这样的,通过drawPixmap(rcTarget,m_itemImage,rcSrc)函数将图片中指定的像素区域切割出来,然后绘制到棋盘上的目标区域,最后就看到棋盘上有棋子的效果了。

 

640?wx_fmt=png

这里所有绘制的动作都是在void paintEvent(QPaintEvent *)绘图事件中完成的。

void MainWindow::paintEvent(QPaintEvent *) { QPainter painter(this); for (int i = 0; i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭