基于项目的图形绘制与动画模拟
在图形编程领域,使用图形视图类和绘制图形项往往比重新实现绘制事件更为简便。下面将详细介绍一个模拟生物群体“多足虫(multipedes)”的应用程序,涉及图形绘制、碰撞检测和简单动画等方面。
1. 基本图形绘制
首先来看一个简单的矩形绘制示例:
if option.state & QStyle.State_Selected: pen.setColor(Qt.blue) painter.setPen(pen) painter.drawRect(self.rect)绘制矩形时,先创建一个具有用户设置线条样式且宽度为 1 逻辑单位的画笔。若矩形被选中,则更改画笔颜色,然后设置画笔并绘制矩形。使用图形视图类和绘制图形项之所以更简单,是因为每个图形项都有自己的paint()方法,且图形项使用以 (0, 0) 为中心的局部逻辑坐标系,这在旋转操作时尤为方便。
2. 多足虫应用程序概述
此应用程序模拟多足虫群体,每个多足虫都有内部定时器。在每个时间间隔,多足虫会移动,若发生碰撞,其颜色会稍有改变,最终消失。下面逐步分析该应用程序的实现。
3. 主窗体初始化
class MainForm(QDialog): def __init__(self, parent=None): super(MainForm, self).__init_