天天看點

QML 圖形渲染 - GaussianBlur屬性介紹注意事項不同數值效果展示官方示例

作者:billy

版權聲明:著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處

屬性介紹

  • cached : bool

    使用緩存效果輸出像素,可以提高渲染性能。每次更改源或效果屬性時,都必須更新緩存中的像素。會增加記憶體消耗,因為存儲效果輸出需要額外的記憶體緩沖區。是以我們建議在源屬性或效果屬性設定動畫時禁用緩存。預設為 false

  • deviation : real

    高斯函數的一個參數,用于計算模糊的相鄰像素權重。偏差越大,圖像越模糊,但也會降低模糊的品質。該值的範圍為 0.0(無偏差)到 inf(最大偏差)。預設情況下綁定到半徑。當半徑增加時,偏差将自動線性增加。半徑值為 8 時,偏差預設值約為 2.7034。該值在模糊品質和整體模糊度之間産生折中

  • radius : real

    影響單個像素模糊的相鄰像素的距離。較大的半徑會增加模糊效果。該值的範圍為 0.0(無模糊)到 inf。預設情況下,該屬性設定為 floor(samples / 2.0)

  • samples : int

    在完成模糊計算時每個像素采集的采樣數。值越大,品質越好,但渲染速度越慢。預設情況下,該值為 9。注意:此屬性不觸發動畫。更改此屬性可能會導緻重新編譯基礎 OpenGL 着色器

  • source : variant

    要模糊的源項。注意:不支援讓效果包含自身

  • transparentBorder : bool

    項目邊緣附近的模糊行為,其中像素模糊受源邊緣外像素的影響。如果該屬性設定為 true,則源外部的像素将被解釋為透明的,這類似于 OpenGL 鉗制到邊框擴充。模糊在效果項區域外稍微展開。如果該屬性設定為 false,則源之外的像素将被解釋為包含與項目邊緣像素相同的顔色,這類似于 OpenGL 鉗制到邊緣的行為。模糊不會在效果項區域之外展開。預設情況下,該屬性設定為 false

注意事項

  1. GaussianBlur 支援 OpenGL 渲染
  2. 高斯模糊效果通過使用高斯函數計算效果的算法使圖像模糊來軟化圖像。該效果産生的品質高于 FastBlur,但渲染速度較慢

不同數值效果展示

QML 圖形渲染 - GaussianBlur屬性介紹注意事項不同數值效果展示官方示例
QML 圖形渲染 - GaussianBlur屬性介紹注意事項不同數值效果展示官方示例
QML 圖形渲染 - GaussianBlur屬性介紹注意事項不同數值效果展示官方示例
QML 圖形渲染 - GaussianBlur屬性介紹注意事項不同數值效果展示官方示例

官方示例

import QtQuick 2.12
import QtGraphicalEffects 1.12

Item {
    width: 300
    height: 300
    
    Image {
        id: bug
        source: "images/bug.jpg"
        sourceSize: Qt.size(parent.width, parent.height)
        smooth: true
        visible: false
    }
    
    GaussianBlur {
        anchors.fill: bug
        source: bug
        radius: 8
        samples: 16
    }
}
           
QML 圖形渲染 - GaussianBlur屬性介紹注意事項不同數值效果展示官方示例

繼續閱讀