2012-06-18 10 views
7

Próbuję narysować półprzezroczysty prostokąt na górze obrazu, aby działał jako podświetlenie. Niestety, nic, co próbuję, nie wydaje się być w stanie wykonać pożądanego efektu przezroczystości. Zamiast tego dostaję tylko wypełnione prostokąty bez przezroczystości.Jak narysować półprzezroczysty prostokąt w Qt?

Oto co robię teraz:

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

Niestety, dla mnie, to rysuje stałe niebieski prostokąt, zamiast półprzezroczystego jednego Spodziewam powodu dając QBrush alfa wartość.

Próbowałem także rysować do pośredniego QImage lub QPixMap, bawiąc się z painter.setCompositionMode(...). Do tej pory nie było szczęścia.

Moje pytanie: jak przekonać Qt do narysowania półprzezroczystego prostokąta do mojego PageView?

EDIT: Jeśli jest to istotne, buduję to pod Qt 4.8.1 na Windowsie.

+0

Nie ma konstruktora 'QBrush (r, g, b, a)' w [Qt docs] (http://doc-snapshot.qt-project.org/4.8/qbrush.html). Czy chodziło Ci o 'QColor'? –

+0

Tak, tak. Mój błąd. – Managu

+0

Pełna 'PageView :: paintEvent' na http://pastebin.com/Dj9dDd0c. Chociaż nie sądzę, że w tym, co pominąłem, jest coś interesującego. – Managu

Odpowiedz

13

Kod działa na mnie z niewielkimi zmianami, gdyż nie kompilować jak masz to:

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

UWAGA:

PO został malowania pół przezroczysty prostokąt pętli powodując ten sam obszar do malowania wiele razy. Spowoduje to efekt addytywny, który ostatecznie spowoduje, że obszar ten będzie wyglądać tak samo jak pełne wypełnienie.

+0

Rightio, wpisz moje zgłoszenie. Ale to tworzy dla mnie solidne prostokąty, a nie półprzezroczyste. – Managu

+0

Czy próbowałeś wywoływania 'fillRect()' jak mam to tutaj z 'QBrush'? –

+0

Dodano pełną pastę na http://pastebin.com/Dj9dDd0c – Managu

Powiązane problemy