在我的示例中,我使用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))
1条答案
按热度按时间c2e8gylq1#
您可以使用
blendMode
复制您尝试应用的颜色。下面是一个例子:我们首先将混合模式设置为
copy
,以便将即将到来的颜色直接复制到上下文,而无需进行任何计算。然后我们需要将混合模式重置回normal
。至少在我的测试用例中,这似乎是正确的。但你说得很对。缺少大量API。我个人在这个案例中缺少的实际上是
saveGState
和restoreGState
。这些可以在上下文上推送弹出您的设置,以便当您恢复它时,您知道您已将设置恢复到先前设置的内容。现在,在我们的代码中,我们假设需要将混合模式恢复为.normal
。