2012-03-01 18 views
7

He escrito una función que debe dibujar un círculo negro lleno en mi escena de gráficos. La función dibuja un círculo negro alineado pero no se llena? Este es mi función:dibujar un círculo lleno

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); 

} 

saludos cordiales,

Respuesta

10

drawArc() no utiliza un color de relleno, el uso drawEllipse() para un círculo completo que se llena.

+0

Hola, ¿esto no causará un redibujado cada vez que el widget entre en la ventana gráfica o el usuario edite alguna otra parte del widget? ¿No será eso caro? ¿No hay una manera de dibujarlo de una vez? – SexyBeast

+0

El sistema de pintura Qt intenta optimizar cuando se disparan los eventos de pintura para reducir el repintado innecesario tanto como sea posible y es suficiente en la mayoría de los casos. Si una operación de pintura es compleja o se repinta con frecuencia, se pueden introducir optimizaciones como usted menciona al pintar en un mapa de píxeles y almacenarlo en caché. –

4

drawEllipse() solos aún no ha resuelto mi problema

acabo añade painter.setBrush(Qt::red);

antes drawEllipse()

y funciona perfecto.

Cuestiones relacionadas