2011-05-18 69 views
2

我正在研究一個小型塔防遊戲以學習Qt。我正在使用QGraphicsScene來保存遊戲的所有對象。爲了讓它們移動,我沒有使用動畫框架,但我正在調用advance()方法和QTimer。QGraphicsItem繪圖問題

我想讓我的射彈在擊中敵人時發生爆炸。問題是,當我試圖繪製一個橢圓來模擬爆炸時,它無法正確繪製。

您可以在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); 
} 

你有關於如何解決這個問題的任何線索?

謝謝。

+0

很難說沒有看到你的代碼;但在我的經驗中,工件和怪異的剪裁可能是由於錯誤地指定了圖形項目的boundingRect而導致的。 – grayDad 2011-05-18 17:20:32

回答

1

說CNT是3 您正在繪製的橢圓與

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

這將需要一個boundingRect具有至少爲9
的寬度和高度也將boundingRect使用內部項目座標指定系統。您正在從(-3,-3)繪製到(6,6),它位於boundingRect之外。

+0

nitpick:'drawEllipse(-3,-3,6,6)'從'(-3,-3)'繪製到'(+ 3,+ 3)',因此它適合於7×7邊界矩形。 – 2011-05-18 18:45:57