QGraphicsItem绘图问题

时间:2011-05-18 16:31:35

标签: c++ qt qgraphicsview

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

当他们击中敌人时,我想让我的射弹爆炸。问题是,当我试图绘制椭圆来模拟爆炸时,它无法正确绘制。

您可以在this video中看到问题。

我尝试使用z-index但它没有改变任何东西。

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

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);
}

你有解决这个问题的线索吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

说cnt是3。 您正在使用

绘制椭圆
painter->drawEllipse(-3,-3,6,6)

这将需要一个至少宽度和高度为9的boundingRect 此外,使用内部项目坐标系指定boundingRect。您正在从(-3,-3)到(6,6)绘制,它位于boundingRect之外。