【发布时间】:2019-05-24 17:17:34
【问题描述】:
我想创建一种遮罩层,它由一个带有孔的黑色区域组成。通过这些孔应该可以看到背景。在最简单的版本中,它只是一个覆盖整个屏幕的矩形,中间有一个开口。如下图示例所示。
我的第一个方法是使用 QML 的 Context2D 功能:https://doc.qt.io/qt-5/qml-qtquick-context2d.html。也许这样做是完全错误的,但也许这是一个很好的起点。我试图创建一个矩形(有效)和一个剪切区域(无效)。除了我的剪辑实现不起作用这一事实之外,我还有一个问题,即 clip() 命令会擦除其路径之外而不是内部的区域(至少这是我从文档中了解到的:https://doc.qt.io/qt-5/qml-qtquick-context2d.html#clip-method)。
Canvas {
anchors.fill: parent
onPaint: {
var ctx = getContext("2d");
ctx.fillStyle = "black"
ctx.beginPath();
ctx.fillRect(0, 0, Sizes.rootWindow.width, Sizes.rootWindow.height);
ctx.fill();
}
【问题讨论】:
-
如果您想要一些简单的解决方案,请创建 4 个矩形作为边框。
-
查看 OpacityMask