【发布时间】:2017-02-14 22:13:54
【问题描述】:
我的这个问题对于其他语言和框架来说似乎很常见:
如何在矩形的边框上应用渐变? 到目前为止,我的解决方案是一个自定义组件,例如:
Item {
id: root
property int borderWidth
property alias borderGradient: border.gradient
property alias gradient: fill.gradient
property alias color: fill.color
property int radius
Rectangle {
id: border
anchors.fill: parent
radius: root.radius
Rectangle {
id: fill
anchors.fill: parent
anchors.margins: root.borderWidth
radius: root.radius * width / border.width / 2
}
}
}
然而,这不允许我将矩形的颜色设置为“透明”,这很可悲,但我可以忍受。我仍然想知道,是否有更优雅的方式(除了直接使用 Context2D 或 QSG ......)
您好,
-m-
【问题讨论】:
-
QQuickPaintedItem可能是最简单的。可能有一些方法可以使用OpacityMask着色器效果来破解它,或者在Canvas中绘制一次渐变帧,然后使用画布作为图像源,类似于此处解释的方法:stackoverflow.com/questions/35025386/… -
哇,看起来很复杂。我需要相当长的时间来消化它。谢谢!
-
虽然我尽量避免使用QtGraphicalEffects,但OpacityMask确实很强大!