ios SwifUI的GraphicsContext中的rect有多清晰

pxiryf3j  于 2023-05-02  发布在  iOS
关注(0)|答案(1)|浏览(107)

在我的示例中,我使用GraphicsContext绘制了一个矩形。

Canvas { context, size in
    context.fill(
        Path(CGRect(
            x: 0,
            y: 0,
            width: 300,
            height: 200
        )),
        with: .color(.green))
}
.frame(width: 300, height: 200)

现在,我想清除rect,但在GraphicsContext中没有找到clear API,如何清除rect?
我试着用另一种颜色。绿色矩形与绿色矩形重叠,但不是透明矩形。

context.fill(
    Path(CGRect(
        x: 0,
        y: 0,
        width: 300,
        height: 200
    )),
    with: .color(.clear))
c2e8gylq

c2e8gylq1#

您可以使用blendMode复制您尝试应用的颜色。下面是一个例子:

context.blendMode = .copy
context.fill(
    Path(CGRect(
        x: 0,
        y: 0,
        width: 300,
        height: 200
    )),
    with: .color(.clear))
context.blendMode = .normal

我们首先将混合模式设置为copy,以便将即将到来的颜色直接复制到上下文,而无需进行任何计算。然后我们需要将混合模式重置回normal
至少在我的测试用例中,这似乎是正确的。但你说得很对。缺少大量API。我个人在这个案例中缺少的实际上是saveGStaterestoreGState。这些可以在上下文上推送弹出您的设置,以便当您恢复它时,您知道您已将设置恢复到先前设置的内容。现在,在我们的代码中,我们假设需要将混合模式恢复为.normal

相关问题