10

我想做一些类似于 Core Graphics 中的 Photoshop 内阴影效果的东西。如果我用这种效果绘制/填充路径,我希望得到类似于以下内容的内容:替代文字

4

2 回答 2

11

以下是制作此图像所需创建的图层,从后到前:

基色,在本例中为白色背景。

影子。

投射阴影的形状。这是通过找到内部形状的边界框,将该框扩展超过阴影的宽度,然后在具有内部形状的框上切割一个孔来实现的。

用内部形状剪裁这些。

然后最后绘制周围的彩色形状,在这种情况下是一个内部形状被剪掉的矩形。

注意:根据预期的外观,投射阴影的形状可能与填充前景色的形状相同,也可能不同。内部形状和外部形状之间的薄截面会减少阴影。如果不需要这种效果,则需要更大的外部形状才能获得一致的内部阴影。此外,如果阴影超出外部形状,则需要对阴影进行显式剪裁。

要绘制一个中间有孔的形状,例如这个示例形状,您需要绘制一条带有两个子路径的路径。一个子路径是外部盒子,另一个是内部不规则形状。如果您使用默认的非零绕组数规则,您需要指定与内部不规则形状相反方向的外框点。例如,按顺时针顺序指定外框的点将需要按逆时针顺序指定内部形状的点。有关更多详细信息,请参阅Quartz 2D Programmer's Guide 的路径部分。

于 2010-02-03T13:45:11.893 回答
0

石英内嵌/内阴影

将此代码放在 xcode 游乐场中,您就可以上路了:

https://gist.github.com/eonist/520fa35958c123ad6840

于 2015-12-11T05:55:56.410 回答