Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何创造活版效果?_Objective C_Cocoa_Macos - Fatal编程技术网

Objective c 如何创造活版效果?

Objective c 如何创造活版效果?,objective-c,cocoa,macos,Objective C,Cocoa,Macos,我希望在我的应用程序中实现一些类似著名的“凸版”效果的东西。以下是我要说的:(只是PShop中的一个简单示例) 正如你所看到的,它看起来像是被压进了背景中。我想知道是否有可能在Mac上动态执行类似的操作。有办法吗?谢谢 使用普通字体绘制文本,以创建文本的黑白位图 画另一幅同样大小的图像,完全用上面的灰色到白色渐变填充 创建一个与其他图像大小相同的完全白色图像 使用NSCompositeDestinationOut将背面和白色文本图像(1)绘制到白色图像(3)上 这将为您提供一个剪切文本的白色图

我希望在我的应用程序中实现一些类似著名的“凸版”效果的东西。以下是我要说的:(只是PShop中的一个简单示例)

正如你所看到的,它看起来像是被压进了背景中。我想知道是否有可能在Mac上动态执行类似的操作。有办法吗?谢谢

  • 使用普通字体绘制文本,以创建文本的黑白位图
  • 画另一幅同样大小的图像,完全用上面的灰色到白色渐变填充
  • 创建一个与其他图像大小相同的完全白色图像
  • 使用NSCompositeDestinationOut将背面和白色文本图像(1)绘制到白色图像(3)上
  • 这将为您提供一个剪切文本的白色图像


    用在渐变图像顶部剪切的文本绘制白色图像,并在绘制时应用阴影。

    您可以使用我在中提供的代码完成文本的渐变填充部分。首先检查坐标空间,因为我描述了iPhone的坐标空间,与Mac的普通石英坐标相比,iPhone有一个倒置的Y轴

    文本首先用于创建剪切路径,并在该路径内绘制渐变


    至于内部阴影,在绘制渐变后,可以使用带有适当向下偏移和黑色的
    CGContextSetShadowWithColor()
    绘制内部阴影,然后仅使用文本的笔划再次绘制文本。deanWombourne在他的回答中提供了一些类似任务的示例代码。

    如果您确实需要这种效果,并且没有其他可用的解决方案,您可以始终对每个字符使用单独的PNG文件,并将它们合并在一起。难看,但效果很好:)@Anne:我想我可以做一个定制字体来完成这项工作,但我真的不知道该怎么做。这似乎很激烈。除非有更简单的方法,否则我可能暂时不使用它,因为仅仅显示文本似乎太费劲,而且处理器密集。它肯定是PITA,但不是真正的处理器密集型。啊,这是我一直在想的。谢谢你,布拉德!