2016-10-25 29 views
0

我使用Qt5.6,我開發了幾個小部件,將內容渲染到屏幕外位圖,然後將最終圖像複製到可見區域。Qt渲染到屏幕外顯示,複製到可見而不覆蓋背景

我在可見顯示器上顯示一個區域,顯示一個視頻源,我想在視頻上覆製圖像而不覆蓋背景並避免閃爍。

我目前使用'QPixmap'創建屏幕外圖像,然後使用Pixmap創建一個畫家並繪製屏幕外圖像。當圖像準備就緒時,我會調用'toImage'函數返回'QImage',然後將其複製到可見的顯示。

很多widget包含直線和圓圈,其中很多都沒有填充。

我看過其他文章沒有使用QPixmap,只是使用'QImage',我應該使用'QPixmap'嗎?

問題是如何將圖像從屏幕外區域複製到可見區域而不覆蓋背景?

回答

2

透明度的關鍵是覆蓋圖像有一個alpha通道。 QPixmap使用底層圖形系統的圖形格式,它應該包含一個alpha通道。對於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之前。 第四個參數是默認情況下爲255(完全不透明)的alpha通道。

不幸的是,我不能給出建議QPixmap或QImage是否對您的設置更快。

提供與videofeed的合成操作考慮alpha通道,這應該解決您的問題。