首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以从带有alpha通道的图像中获取CGPath吗?

我可以从带有alpha通道的图像中获取CGPath吗?
EN

Stack Overflow用户
提问于 2012-12-18 20:44:46
回答 1查看 1.4K关注 0票数 4

我设法使用与这里类似的方法屏蔽视图:How to mask UIViews in iOS,但现在我需要检测这个屏蔽视图中的触点。Gesture recognisers和按钮将检测bounds区域中的触摸,基本上忽略掩码。所以我想如果我可以从我的蒙版图像中获得CGPath,那么处理触摸就会很容易。关于如何从蒙版图像中获取CGPath有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 21:08:30

您可以设置UIGestureRecognizer的委托并重写- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

1.获取触摸在识别器视图中的位置

- (CGPoint)locationInView:(UIView *)view

2.找出该位置的图像的alpha通道。为此,请使用以下代码(为了提高效率,您可以提前重新计算整个图像的透明值,并将它们存储到缓冲区中,这样您就不必每次都复制alpha缓冲区。我在这里保持了简单,并且只使用了一个像素。如果你想看看如何一次完成整个图像,看看这个post

代码语言:javascript
复制
unsigned char pixelData[1] = {0};
CGContextRef context = CGBitmapContextCreate(pixelData, 1, 1, 8, 1, NULL, kCGImageAlphaOnly);
UIGraphicsPushContext(context);
[im drawAtPoint:CGPointMake(-point.x, -point.y)];
UIGraphicsPopContext();
CGContextRelease(context);
CGFloat alphaChannel = pixel[0]/255.0;
BOOL transparent = alphaChannel < 0.01;

  1. 基于该值,返回YES或NO
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13933335

复制
相关文章

相似问题

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