Tôi đang cố gắng vẽ hình chữ nhật nửa trong suốt ở đầu hình ảnh để làm điểm đánh dấu. Thật không may, không có gì tôi cố gắng dường như có thể thực hiện hiệu ứng trong suốt mà tôi muốn. Thay vào đó tôi chỉ nhận được hình chữ nhật đầy rắn, không có sự minh bạch.Làm cách nào để vẽ hình chữ nhật nửa trong suốt trong Qt?
Đây là những gì tôi đang làm ngay bây giờ:
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));
...
}
Thật không may, đối với tôi, điều này có vẽ một hình chữ nhật màu xanh rắn, thay vì một nửa trong suốt tôi mong đợi do đưa ra QBrush
alpha giá trị.
Tôi cũng đã thử vẽ đến một số trung gian QImage
hoặc QPixMap
, phát xung quanh với painter.setCompositionMode(...)
. Không may mắn cho đến nay.
Vì vậy, câu hỏi của tôi: Làm thế nào tôi có thể thuyết phục Qt vẽ hình chữ nhật nửa trong suốt đến PageView
của tôi?
CHỈNH SỬA: Nếu có liên quan, tôi đang tạo phiên bản này dưới Qt 4.8.1 trên Windows.
Không có hàm tạo 'QBrush (r, g, b, a)' trong [Tài liệu Qt] (http://doc-snapshot.qt-project.org/4.8/qbrush.html). Ý bạn là 'QColor'? –
Tôi đã làm, vâng. Lỗi của tôi. – Managu
Đầy đủ 'PageView :: paintEvent' tại http://pastebin.com/Dj9dDd0c. Mặc dù tôi không nghĩ có gì thú vị trong những gì tôi bỏ qua. – Managu