11

画像の上に半透明の長方形を描画して、ハイライトとして機能させようとしています。残念ながら、私が試したものは、私が望む透明効果を実行できるようには見えません. 代わりに、透明度のない塗りつぶされた四角形を取得します。

これが私が今していることです:

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

残念ながら、私にとっては、これは、アルファ値を与えるために期待する半透明の長方形ではなく、真っ青な長方形を描画します。QBrush

また、中間体QImageまたはQPixMapで遊んでみましたpainter.setCompositionMode(...)。これまでのところ運がありません。

したがって、私の質問: Qt に半透明の長方形を描画するように説得するにはどうすればよいPageViewですか?

編集: 関連する場合は、Windows の Qt 4.8.1 でこれをビルドしています。

4

1 に答える 1

18

コードは、あなたが持っているようにコンパイルされないため、わずかな変更で機能します。

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

ノート:

OP が半透明の長方形をループでペイントしていたため、同じ領域が複数回ペイントされていました。これにより、最終的にその領域が塗りつぶしと同じように見える追加効果が生じます。

于 2012-06-18T01:30:59.447 に答える