Q项目绘制问题

QGraphicsItem drawing problem

本文关键字:问题 绘制 项目      更新时间:2023-10-16

我正在开发一个小型塔防游戏,以便学习Qt。我正在使用QGraphicsScene来保存游戏的所有对象。为了使它们移动,我没有使用动画框架,而是调用 advance() 方法和 QTimer。

我想让我的射弹在击中敌人时爆炸。问题是,当我尝试绘制一个椭圆来模拟爆炸时,它没有被正确绘制。

您可以在此视频中看到问题。

我尝试使用 z 索引,但它没有改变任何东西。

这是我用来绘制弹丸的代码:

void Projectile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    if(!isExploding) {
        painter->drawPixmap(boundingRect().toRect(), image);
    } else {
        if(cnt < 50) {
            painter->setBrush(QBrush(explosion));
            painter->drawEllipse(-cnt, -cnt, 2.0*cnt, 2.0*cnt);
            cnt++;
        } else {
            this->isFinished = 1;
        }
    }
}
QRectF Projectile::boundingRect() const
{
    // Taille de l'image de l'insecte
    return QRectF(0, 0, 6, 6);
}

你有什么线索如何解决这个问题吗?

谢谢。

假设cnt是3。您正在绘制一个椭圆

painter->drawEllipse(-3,-3,6,6)

这将需要一个宽度和高度至少为 9 的边界矩形。
此外,边界矩形也是使用内部项目坐标系指定的。 您正在从 (-3,-3) 绘制到 (6,6),这超出了边界矩形。