4.7そしてqgraphicsviewに2つの画像をオーバーレイしたい。上の画像は、透けて見えるように半透明にする必要があります。最初、両方の画像は完全に不透明です。各ピクセルのグローバルアルファ値を設定する関数が存在することを期待していましたが、そのような関数はないようです。これに最も近いのはQPixmap::setAlphaChannel(const QPixmap&alphaChannel)ですが、Qt-4.6以降は廃止されたとマークされています。代わりに、マニュアルではQPainterのCompositionModesについて言及していますが、不透明な画像に必要な透明度を追加することに成功していません。誰かが私に実用的な例を示したり、コードを共有したりできますか?
編集: 質問をしてからほんの数時間後に、自分の答えを持って申し訳ありません。この記事から、次のコードがその役目を果たしていることがわかりました。アルファ値をピクセル単位で変更するよりも、これが「より良い」(多くの場合、より高速に変換される)と見なされるのではないかと思います。
QPainter p;
p.begin(image);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(image->rect(), QColor(0, 0, 0, 120));
p.end();
mpGraphicsView->scene()->addPixmap(QPixmap::fromImage(image->mirrored(false,true),0));