为了学习Qt,我正在开发一个小的塔防游戏。我正在使用一个QGraphicsScene来保存游戏的所有对象。为了让它们移动,我没有使用动画框架,但我调用了带有QTimer的advance()方法。
我想让我的投射物在击中敌人时爆炸。问题是,当我试图绘制一个椭圆来模拟爆炸时,它不能正确绘制。
你可以在this video中看到这个问题。
我尝试使用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);
}你有任何关于如何解决这个问题的线索吗?
谢谢。
发布于 2011-05-19 02:06:21
假设cnt为3。您正在绘制一个椭圆
painter->drawEllipse(-3,-3,6,6)这将要求boundingRect的宽度和高度至少为9。
boundingRect也是使用内部项目坐标系指定的。您正在从boundingRect之外的(-3,-3)到(6,6)进行绘图。
https://stackoverflow.com/questions/6047985
复制相似问题