2012-03-01 271 views
7

我已经写了一个函数,必须在我的graphicsscene上绘制一个填满的黑色圆圈。该函数绘制黑色圆圈但未填满?这是我的函数:画一个填满的圆圈

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 2016-02-12 00:48:11

+0

Qt绘图系统尝试优化绘画事件的发生时间,以尽可能减少不必要的重绘,并且在大多数情况下足够了。如果绘制操作很复杂或经常重新绘制,那么可以通过绘制到像素图并将其缓存来引入优化。 – 2016-02-12 14:08:49

4

drawEllipse()单独didnt解决我的问题

只是我加入painter.setBrush(Qt::red);

drawEllipse()

和完美的作品。