gpt4 book ai didi

c++ - QGraphicsScene 上的静态 QGraphicsItem

转载 作者:行者123 更新时间:2023-11-28 06:18:07 25 4
gpt4 key购买 nike

我正在 Qt 中使用图形 View 框架开发一个简单的 Pacman 克隆游戏。我创建了一个类 WallItem,它继承了 QGraphicsItem。它代表迷宫,由许多小块(弧线、直线等)组成。

class WallItem: public QGraphicsItem
{
protected:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
}

我的应用程序的主类继承了 QGraphicsView。

class Canvas:  public QGraphicsView 
{
Q_OBJECT
private:
WallItem* wallItem;
PacmanItem* pacman;
//other items
}

在 Canvas 的构造函数中,我将 wallItem 添加到场景中;

wallItem = new WallItem(/*params*/);
scene()->addItem(wallItem);
pacmanItem = new PacmanItem(/*params*/);
scene()->addItem(pacmanItem);
//other items

问题是我只想调用 wallItem 的方法 paint 一次 - 在应用程序开始时,因为迷宫中的墙是静态的。然而,当 pacman 移动或食物被移除时,场景更新和所有项目,包括 wallItem,重新绘制影响性能。我如何才能使我的 wallItem 静态化,而无需在场景中的每次更新时重新绘制?

对不起我的英语,这不是我的第一语言。

最佳答案

enum QGraphicsItem::CacheMode

“缓存用于通过分配和渲染到一个离屏像素缓冲区来加速渲染,当项目需要重绘时可以重复使用。对于一些绘图设备,缓存直接存储在图形内存中,这使得渲染很快。”

尝试

QGraphicsItem::ItemCoordinateCache

关于c++ - QGraphicsScene 上的静态 QGraphicsItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com