Core Graphics 中的内部阴影
Posted
技术标签:
【中文标题】Core Graphics 中的内部阴影【英文标题】:Inner shadow in Core Graphics 【发布时间】:2011-01-11 06:21:55 【问题描述】:我想在 Core Graphics 中做一些类似于 Photoshop 内阴影效果的东西。如果我用这种效果绘制/填充路径,我希望得到类似于以下内容:
【问题讨论】:
如何使用您的 InnerShadowDrawing.m 在 UILabel 的文本上绘制内部阴影? 【参考方案1】:以下是制作此图像所需创建的图层,从后到前:
基色,在本例中为白色背景。
影子。
投射阴影的形状。这是通过找到内部形状的边界框,将该框扩大超过阴影的宽度,然后在具有内部形状的框上切割一个孔来实现的。
用内部形状剪裁这些。
然后最后绘制周围的彩色形状,在本例中是一个内部形状被剪掉的矩形。
注意:根据预期的外观,投射阴影的形状可能与填充前景色的形状相同,也可能不同。内部形状和外部形状之间的薄部分会减少阴影。如果不需要这种效果,则需要更大的外部形状才能获得一致的内部阴影。此外,如果阴影超出外部形状,则需要显式剪切阴影。
要绘制一个中间有孔的形状,例如这个示例形状,您需要绘制一个包含两个子路径的路径。一个子路径是外部盒子,另一个是内部不规则形状。如果您使用默认的非零绕组数规则,您需要指定与内部不规则形状相反方向的外框点。例如,按顺时针顺序指定外框的点将需要按逆时针顺序指定内部形状的点。详情请参阅Quartz 2D Programmer's Guide's section on Paths。
【讨论】:
谢谢,但我的主要问题是:您如何以所需的方式“剪切”Core Graphics 中的内容? 我编辑了我的答案以添加更多关于绘制带孔路径的信息。【参考方案2】:石英内嵌/内阴影
将此代码放到 xcode 游乐场中,您就可以上路了:
https://gist.github.com/eonist/520fa35958c123ad6840
【讨论】:
以上是关于Core Graphics 中的内部阴影的主要内容,如果未能解决你的问题,请参考以下文章
使用 Core Graphics 绘图在 Retina 显示屏上看起来很厚实
带有 Core Graphics 绘图的 Core Animation
R语言使用econocharts包创建微观经济或宏观经济图tax_graph函数可视化税收图(Tax graph)使用shaded参数添加阴影区域