【问题标题】:Using NSShadow for non-rectangular shapes将 NSShadow 用于非矩形形状
【发布时间】:2011-06-20 09:15:43
【问题描述】:
我正在 CIImage 对象内绘制各种非矩形形状的阴影。我通过子类化 CIFilter 并结合我自己的过滤器内核和高斯模糊过滤器来做到这一点。我想知道是否可以通过使用 NSShadow 来获得性能提升。
我也不确定 NSShadow 是否可以用来绘制非矩形形状的阴影?例如,在another question 的答案中,我发现为了使用 NSShadow,首先需要创建一个形状的 NSBezierPath。
在这种情况下尝试使用 NSShadow 是否有任何提示、建议或我完全不在此列?
【问题讨论】:
标签:
objective-c
cocoa
drawing
shadow
【解决方案1】:
我不知道它是否会更快,但肯定会更容易。请记住,您拥有的代码越少,您的错误就越少。
NSShadow 适用于任何形状,矩形或其他形状。事实上,一些我们通常不会认为是影子的东西实际上可以实现为影子。例如,辉光只是一个白色的“阴影”。我猜对焦环在内部是阴影。
您不需要创建 NSBezierPath。绘制带有阴影的图像就可以了。唯一不需要的是绘制渐变(如在 NSGradient 中)。
为了其他读者的利益:所有这些都同样适用于 Quartz,CGContext 的阴影属性以及排除 CGGradient 和可能的 CGShading。