2012-06-18 2 views
7

이미지 위쪽에 반투명 사각형을 그려 강조 표시하려고합니다. 불행히도, 내가 시도하는 것은 내가 원하는 투명성 효과를 수행 할 수없는 것 같습니다. 대신 투명도가없는 단색으로 채워진 사각형을 얻습니다. 나는 알파 QBrush을 제공으로 인해 기대Qt에서 반투명 사각형을 그리려면 어떻게해야합니까?

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

을 불행하게도 나를 위해, 이것은 고체 파란색 사각형을 그립니다 대신 반투명 하나 : 여기

내가 지금 뭘하는지입니다 값.

QImage 또는 QPixMap 중간에 그리기를 시도했으며 painter.setCompositionMode(...)으로 놀았습니다. 지금까지 행운이 없습니다.

따라서 내 질문 : 어떻게 Qt를 내 PageView에 반투명 사각형을 그립니다 설득 할 수 있습니까?

EDIT : 관련성이있는 경우 Windows 용 Qt 4.8.1에서 작성합니다.

당신이 그것을 컴파일하지 않는 코드는 약간의 수정과 함께 나를 위해 작동
+0

더 QBrush '(R, G, B, A)가 [Qt는 문서]에서'생성자 없다 (http://doc-snapshot.qt-project.org/4.8/qbrush.html). 'QColor'를 원하셨습니까? –

+0

나는 그랬다. 내 실수. – Managu

+0

전체'PageView :: paintEvent'는 http://pastebin.com/Dj9dDd0c에 있습니다. 비록 내가 생략 한 것에 흥미있는 것이 없다고 생각 하긴하지만. – Managu

답변

13

그것은 :

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

참고 : 영업 이익은 유발 루프에 반투명 사각형을 그림했다

동일한 영역을 여러 번 칠해야합니다. 결과적으로 추가 효과가 발생하여 해당 영역이 단색 채우기와 동일하게 보입니다.

+0

Rightio, 내 질문에 제출 형식. 그러나 이것은 반투명이 아닌 내게 단색 직사각형을 만들어냅니다. – Managu

+0

'QBrush '와 함께 여기'fillRect()'호출을 시도 했습니까? –

+0

http://pastebin.com/Dj9dDd0c – Managu

관련 문제