如何在图像中制作渐变不透明度?
How do I make a gradient opacity in an image?
如何在 qml 中使图像淡入淡出?我如何实现这种效果?在这里,我附上了我希望它看起来如何的图像
一个可能的解决方案是使用 OpacityMask
with a LinearGradient
作为来源
import QtQuick 2.9
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0
Window {
visible: true
width: 600
height: 600
title: qsTr("Hello World")
Image {
id: input
source: "input.jpg"
anchors.fill: parent
OpacityMask {
source: mask
maskSource: input
}
LinearGradient {
id: mask
anchors.fill: parent
gradient: Gradient {
GradientStop { position: 0.2; color: "transparent"}
GradientStop { position: 0.5; color: "white" }
}
}
}
}
输入:
输出:
虽然公认的解决方案达到了预期的效果,但它实际上并没有在原始图像中创建不透明度渐变(这正是我所需要的)。它只是将 LinearGradient
叠加在图像之上; OpacityMask
没有做任何事情,可以从该示例中删除。图片底部的白色来自 LinearGradient
,而非背景。
下面是如何在原始图像中创建不透明度渐变的示例。请注意,“源图像”(在本例中为 Rectangle
)和 LinearGradient
的可见性均为 false
。
import QtQuick 2.9
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0
Window {
visible: true
width: 400
height: 400
title: qsTr("Hello World")
// The background, to ensure it's working
Rectangle {
color: "red"
anchors.fill: parent
}
// The "source image"
Rectangle {
id: blueBox
color: "blue"
anchors.fill: parent
opacity: 0.5
visible: false
}
LinearGradient {
id: mask
anchors.fill: blueBox
gradient: Gradient {
GradientStop {
position: 0.2
color: "transparent"
}
GradientStop {
position: 0.5
color: "white"
}
}
visible: false
}
OpacityMask {
anchors.fill: parent
source: blueBox
maskSource: mask
}
}
如何在 qml 中使图像淡入淡出?我如何实现这种效果?在这里,我附上了我希望它看起来如何的图像
一个可能的解决方案是使用 OpacityMask
with a LinearGradient
作为来源
import QtQuick 2.9
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0
Window {
visible: true
width: 600
height: 600
title: qsTr("Hello World")
Image {
id: input
source: "input.jpg"
anchors.fill: parent
OpacityMask {
source: mask
maskSource: input
}
LinearGradient {
id: mask
anchors.fill: parent
gradient: Gradient {
GradientStop { position: 0.2; color: "transparent"}
GradientStop { position: 0.5; color: "white" }
}
}
}
}
输入:
输出:
虽然公认的解决方案达到了预期的效果,但它实际上并没有在原始图像中创建不透明度渐变(这正是我所需要的)。它只是将 LinearGradient
叠加在图像之上; OpacityMask
没有做任何事情,可以从该示例中删除。图片底部的白色来自 LinearGradient
,而非背景。
下面是如何在原始图像中创建不透明度渐变的示例。请注意,“源图像”(在本例中为 Rectangle
)和 LinearGradient
的可见性均为 false
。
import QtQuick 2.9
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0
Window {
visible: true
width: 400
height: 400
title: qsTr("Hello World")
// The background, to ensure it's working
Rectangle {
color: "red"
anchors.fill: parent
}
// The "source image"
Rectangle {
id: blueBox
color: "blue"
anchors.fill: parent
opacity: 0.5
visible: false
}
LinearGradient {
id: mask
anchors.fill: blueBox
gradient: Gradient {
GradientStop {
position: 0.2
color: "transparent"
}
GradientStop {
position: 0.5
color: "white"
}
}
visible: false
}
OpacityMask {
anchors.fill: parent
source: blueBox
maskSource: mask
}
}