我有一个生成为NSImage的图像,然后使用自定义draw()方法将其绘制到我的NSView子类中。
我想修改这个自定义视图,以便在同一个地方绘制图像,但它会在侧面淡出。也就是说,它绘制为线性渐变,从alpha = 1.0到alpha = 0.0。
我最好的猜测是使用NSCompositingOperation的draw()变体之一可能帮助我做我想要的,但我很难理解他们如何做到这一点。我不是图形专家,NSImage和NSCompositingOperation文档似乎使用了不同的术语。
快速版本:非常this question,但在macOS上而不是Android。
答案 0 :(得分:2)
你走在正确的轨道上。您需要使用NSCompositingOperationDestinationOut
来实现此目的。这将根据绘制的源的alpha有效地打出目标。因此,如果您首先绘制图像,然后在.destinationOut操作的顶部绘制从alpha 0.0到1.0的渐变,那么最终将使用alpha 1.0到0.0的图像
因为在后备存储中已经绘制了渐变的任何内容中都会发生这种打击,所以您需要注意在何处/如何使用它。
CGContextBeginTransparencyLayer
和CGContextEndTransparencyLayer
在transparency layer内绘制图像和打孔渐变防止其他任何事情发生。