首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像中的CGPath

图像中的CGPath
EN

Stack Overflow用户
提问于 2011-12-08 16:00:32
回答 2查看 6.4K关注 0票数 0

我需要创建基于图像的掩码(任何可能的形状)。我需要:

  1. 创建以CGPath作为适当掩码的CALayer
  2. Call UIView.layer setMask: layer as

因此,主要的问题是如何设置基于黑白图像的CGPath?或者是否可以将掩码直接从图像中放置

谢谢!

掩码的示例图像:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-09 10:10:56

您将需要创建您的图像与阿尔法通道。根据CALayer的掩码属性文档:

是一种可选层,其alpha通道被用作掩码,用于在图层的背景和与过滤后的背景复合图层内容的结果之间进行选择。

因此,您想要用作掩码的层需要一个alpha通道。如果要使用图像创建这样的通道,则图像本身需要一个alpha通道。因此,您需要将上面发布的黑白面具复制到图像的alpha通道中。该特定图像的颜色被忽略。然后加载图像,为其设置图层内容,并将该层用作不同的层掩码。围绕这件事:

代码语言:javascript
复制
UIImage* imageWithAlphaChannel = [UIImage imageNamed:@"alpha.png"]; // Won't work with jpg
CGImageRef cgImageWithAlpha = [imageWithAlphaChannel CGImage];
CALayer* maskingLayer = [CALayer layer];
maskingLayer.contents = (id)cgImageWithAlpha;

//Assume viewToBeMasked is the view, who's layer needs to be masked
CALayer* layerToBeMasked = viewToBeMasked.layer;
layerToBeMasked.mask = maskingLayer;
maskingLayer.frame = layerToBeMasked.bounds;
//Alternativly use: viewToBeMasked.layer.mask = maskingLayer;

在浏览器中编码,找出系统错误。

将所有的掩码存储为png文件可能会影响应用程序的大小。您可以将掩码存储为jpgs,并使用CoreGraphics绘图函数在运行时创建适当的alpha版本。但这是另一个问题.

票数 6
EN

Stack Overflow用户

发布于 2011-12-08 16:06:15

非常类似的问题,我认为,我做了一段时间前。基本上,您需要从导出该文件,然后运行一个例程将该文件转换为CGPath。

在我对这个问题的回答中,你会发现如何做到这一点:

How to detect/handle touch events on curved regions?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8433821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档