2016-10-25 7 views
0

私はQt5.6を使用していますが、オフスクリーンビットマップにコンテンツをレンダリングするいくつかのウィジェットを開発しました。オフスクリーンディスプレイへのQtレンダリング、背景を上書きせずに可視にコピーする

ビデオディスプレイに表示される領域が表示されているため、背景を上書きせずにちらつきを避けてビデオ上にイメージをコピーしたいと考えています。

私は現在、「QPixmap」を使用してオフスクリーンイメージを作成しています。次に、Pixmapを使用してペインタを作成し、オフスクリーンイメージを描画します。イメージが準備できたら、 'toImage'関数を呼び出して 'QImage'を返し、可視ディスプレイにコピーします。

多くのウィジェットには線や円が含まれていますが、その多くは塗りつぶされていません。

QPixmapを使用していない他の投稿を見たことがあります。「QImage」を使用しているだけですが、「QPixmap」を使用していますか?

質問は、背景を上書きせずに、オフスクリーン領域から表示領域に画像をコピーする方法ですか?

答えて

2

透明性の鍵は、オーバーレイ画像にアルファチャンネルが付いていることです。 QPixmapは、基礎となるグラフィックスシステムのグラフィックスフォーマットを使用します。グラフィックスフォーマットには、アルファチャンネルが含まれている必要があります。 QImageのために、フォーマットを明示的に指定することができ、それはQImageのでなければなりません:: Format_ARGB32_Premultipliedは、[1]を参照してください。http://doc.qt.io/qt-5/qimage.html#Format-enum

が最初の場所でのaa完全に透明QImageの/ QPixmapのを取得するには、QPixmapの/ QImageのを呼び出します::(QColorを埋めます(0,0,0,0)); QPainterを作成する前に 4番目のパラメータは、デフォルトで255(完全不透明)のアルファチャンネルです。

QPixmapやQImageの方がセットアップの方が速いかどうかアドバイスできません。

ビデオフィードでのコンポジット操作では、アルファチャンネルが考慮されるため、これで問題は解決します。

関連する問題