2012-03-01 24 views
7

私はグラフィックスカードに塗りつぶした黒い円を描く必要がある関数を書いています。この関数は黒い線の円を描画しますが、塗りつぶされません。これは私の関数である:塗りつぶされた円を描く

void World::damage(int x, int y) 
{ 
    QPainter painter(&worldImage); 
    painter.setBrush(QBrush(Qt::black)); 
    painter.drawArc(x,y,150,50,0,16*360); 
    item = new QGraphicsPixmapItem(QPixmap::fromImage(worldImage)); 
    this->addItem(item); 

} 

種類について、

答えて

10

drawArc()が満たされている完全な円のためdrawEllipse()を使用して、塗りつぶしの色を使用していません。

+0

こんにちは、これは、ウィジェットがビューポートに入るたびに再描画されませんか、またはユーザーがウィジェットの他の部分を編集しますか?高価なものではないでしょうか?それを一度に描く方法はありませんか? – SexyBeast

+0

Qtペイントシステムは、不必要な再描画をできるだけ減らすために、ほとんどの場合、ペイントイベントが発生したときに最適化を試みます。ペイント操作が複雑で頻繁に再描画される場合は、ピックスマップにペイントしてキャッシングすることで、最適化を行うことができます。 –

4

drawEllipse()のみのdidntはちょうど私がdrawEllipse()

painter.setBrush(Qt::red);

を追加し、完璧に動作し

私の問題を解決しました。

関連する問題