C++ qm绘图问题

C++ qm绘图问题,c++,qt,qgraphicsview,C++,Qt,Qgraphicsview,为了学习Qt,我正在做一个小型的塔防游戏。我正在使用QGraphicscene来保存游戏的所有对象。为了使它们移动,我没有使用动画框架,而是使用QTimer调用advance()方法 我想让我的射弹在击中敌人时爆炸。问题是,当我试图画一个椭圆来模拟爆炸时,它没有被正确地画出来 你可以从中看出问题所在 我试着玩z指数,但它没有改变任何事情 下面是我用来画射弹的代码: void Projectile::paint(QPainter *painter, const QStyleOptionGraphi

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

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

你可以从中看出问题所在

我试着玩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);
}
void sparket::paint(QPainter*painter,const QStyleOptionGraphicsItem*选项,QWidget*小部件)
{
如果(!isExploding){
画师->绘图像素贴图(boundingRect().toRect(),图像);
}否则{
如果(碳纳米管<50){
油漆工->退刀(QBrush(爆炸));
画家->抽屉(-cnt,-cnt,2.0*cnt,2.0*cnt);
cnt++;
}否则{
此->isFinished=1;
}
}
}
QRectF投射::boundingRect()常量
{
//不安全的图像
返回QRectF(0,0,6,6);
}
关于如何解决这个问题,你有什么线索吗

谢谢。

说cnt是3。 您正在用图形绘制一个椭圆

painter->drawEllipse(-3,-3,6,6)
这将要求boundingRect的宽度和高度至少为9。

此外,使用内部项目坐标系指定boundingRect。您正在从(-3,-3)绘制到(6,6),这超出了边界矩形。

如果不看到您的代码,很难说;但根据我的经验,错误地指定图形项的边界矩形可能会导致工件和奇怪的剪裁。挑剔:
drawerlipse(-3,-3,6,6)
(-3,-3)
绘制到
(+3,+3)
,因此它适合7×7边界矩形。