战场怎能缺少兵卒:棋子的绘制

本文详细介绍了如何在棋盘上绘制中国象棋的棋子,包括棋盘局面的表示、棋子的绘制方法以及如何使用自定义字体美化棋子文字。通过建立棋子和棋盘的关联,利用CustomPaint组件,实现了棋子的前景绘制。同时,讨论了局面的管理,使用Phase类表示象棋的局面信息,并提供了初始棋盘的设定。最后,引入了中国风字体,提升棋子的视觉效果。
摘要由CSDN通过智能技术生成

上一节我们完成的棋盘的布署和绘制,棋子自然是接下来的重要内容了!

CustomPaint 可以将绘制内容分成背景和前景两款部分,上一节中,我们在 CustomPaint 中将 painter 指向了我们的 BoardPainter 对象,它正是用来指定背景 Painter 的。

本节提要

  • 思考棋子与棋盘的关联
  • 讨论象棋「局面」的表示方式
  • 使用 Canvas 绘制各个棋子
  • 规划局面的管理工具类
  • 应用三方字体美化棋子

布署棋子组件

CustomPaint 还可以指定一个 CustomPainter 类型的 foregroundPainter 对象,用于在背景之上绘制前景内容。我们正是要用它来绘制棋盘上的棋子。

在 lib/board 文件夹下,我们新建一个名叫 pieces-painter.dart 的文件:

import 'package:flutter/material.dart';
import 'board-widget.dart';

class PiecesPainter extends CustomPainter {
  // 棋盘的宽度, 横盘上线格的总宽度,每一个格子的边长
  final double width, gridWidth, squareSide;
  final thePaint = Paint();

  PiecesPainter({@required this.width})
      : gridWidth = (width - BoardWidget.Padding * 2) * 8 / 9,
        squareSide = (width - BoardWidget.Padding * 2) / 9;

  @override
  void paint(Canvas canvas, Size si
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺照云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值