2012-06-18 24 views
7

Estoy tratando de dibujar un rectángulo semitransparente sobre una imagen para resaltar. Lamentablemente, nada de lo que intento parece ser capaz de realizar el efecto de transparencia que quiero. En cambio, obtengo rectángulos rellenos sólidos, sin transparencia.¿Cómo se dibuja un rectángulo semitransparente en Qt?

Aquí es lo que estoy haciendo ahora:

void PageView::paintEvent(QPaintEvent *event) 
{ 
    QPainter painter(this); 
    QImage img=...; 

    painter.drawImage(0, 0, img); 
    ... 
    // draw a light blue, transparent rectangle to highlight 
    QRect rect=...; 
    painter.fillRect(rect, QColor(128, 128, 255, 128)); 
    ... 
} 

Por desgracia, para mí, esto dibuja un rectángulo azul sólida, en lugar de la semi-transparente que espero a que dan a la QBrush un alfa valor.

También traté de dibujar en un intermedio QImage o QPixMap, jugando con painter.setCompositionMode(...). Sin suerte hasta ahora.

Así que mi pregunta: ¿Cómo puedo convencer a Qt para dibujar un rectángulo semitransparente en mi PageView?

EDIT: Si es relevante, estoy compilando esto en Qt 4.8.1 en Windows.

+0

No existe el constructor 'QBrush (r, g, b, a)' en [Qt docs] (http://doc-snapshot.qt-project.org/4.8/qbrush.html). ¿Querías decir 'QColor'? –

+0

Sí, sí. Mi error. – Managu

+0

Completo 'PageView :: paintEvent' en http://pastebin.com/Dj9dDd0c. Aunque no creo que haya nada interesante en lo que omité. – Managu

Respuesta

13

El código funciona para mí con una ligera modificación, ya que no se compile como lo tienes:

painter.fillRect(rect, QBrush(QColor(128, 128, 255, 128))); 

NOTA:

El PO estaba pintando el rectángulo semi transparente en un asa que causa la misma área para pintar varias veces. Esto dará como resultado un efecto aditivo que eventualmente hará que esa área tenga el mismo aspecto que un relleno sólido.

+0

Rightio, typeo en mi presentación de preguntas. Pero esto produce rectángulos sólidos para mí, no semitransparentes. – Managu

+0

¿Has probado la llamada 'fillRect()' como la tengo aquí con un 'QBrush'? –

+0

Agregó la pasta completa en http://pastebin.com/Dj9dDd0c – Managu

Cuestiones relacionadas