MCPcopy Create free account
hub / github.com/XMuli/ChineseChess / paintEvent

Method paintEvent

ChessBoard.cpp:231–328  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

229}
230
231void ChessBoard::paintEvent(QPaintEvent *event)
232{
233 QMainWindow::paintEvent(event);
234
235 QPointF boardOrigin;
236 qreal boardSide = 0.0;
237 if (!boardTransform(boardOrigin, boardSide))
238 return;
239
240 QPainter painter(this);
241 painter.setRenderHint(QPainter::Antialiasing, true);
242
243 // 填充整个棋盘区域背景(label 范围),深木色作为桌面底色
244 const QPoint labelTopLeft = ui->label->mapTo(this, QPoint(0, 0));
245 QRectF fullBg(labelTopLeft.x(), labelTopLeft.y(),
246 ui->label->width(), ui->label->height());
247 QLinearGradient outerBg(fullBg.topLeft(), fullBg.bottomRight());
248 outerBg.setColorAt(0, QColor(160, 120, 80));
249 outerBg.setColorAt(1, QColor(130, 95, 60));
250 painter.setPen(Qt::NoPen);
251 painter.setBrush(outerBg);
252 painter.drawRect(fullBg);
253
254 painter.save();
255 painter.translate(boardOrigin);
256 const qreal scale = boardSide / 960.0;
257 painter.scale(scale, scale);
258
259 m_nOffSet = 60.0; //距离界面的边距
260 m_nD = 90.0; //间距为50px
261 m_nR = m_nD/2.0; //棋子半径为d/2
262
263 //*******************绘画棋盘*******************
264 // 棋盘背景:木纹色渐变
265 QRectF boardRect(m_nOffSet - m_nR, m_nOffSet - m_nR,
266 8 * m_nD + 2 * m_nR, 9 * m_nD + 2 * m_nR);
267 QLinearGradient bgGrad(boardRect.topLeft(), boardRect.bottomRight());
268 bgGrad.setColorAt(0, QColor(222, 184, 135));
269 bgGrad.setColorAt(1, QColor(205, 170, 125));
270 painter.setPen(Qt::NoPen);
271 painter.setBrush(bgGrad);
272 painter.drawRoundedRect(boardRect, 6, 6);
273
274 // 棋盘线条:深棕色
275 QPen boardPen(QColor(101, 67, 33), 2.0);
276 painter.setPen(boardPen);
277
278 //绘画10条横线
279 for(int i = 0; i <= 9; i++)
280 painter.drawLine(QPointF(m_nOffSet, m_nOffSet+i*m_nD), QPointF(m_nOffSet+8*m_nD, m_nOffSet+i*m_nD));
281
282 //绘画9条竖线
283 for(int i = 0; i <= 8; i++)
284 {
285 if(i==0 || i==8)
286 {
287 painter.drawLine(QPointF(m_nOffSet+i*m_nD, m_nOffSet), QPointF(m_nOffSet+i*m_nD, m_nOffSet+9*m_nD));
288 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected