Objective c 如何剪裁或更改石英中图像(像素)的alpha?

Objective c 如何剪裁或更改石英中图像(像素)的alpha?,objective-c,quartz-graphics,alpha,mask,quartz-2d,Objective C,Quartz Graphics,Alpha,Mask,Quartz 2d,我正在制作一个iPhone应用程序,其中有两个图像视图,当你触摸顶部的图像视图时,无论你点击哪里,底部的图像视图就会显示出来 基本上,我想做的是从图像中剪切出一个椭圆/圆形。要做到这一点,我想要么剪切图像,要么将矩形中的alpha像素改为零。我是新的石英二维编程,所以我不知道如何做到这一点 假设我有: UIImageView *topImage; UIImageView *bottomImage; 如何从这些图像中删除CGRect/eliple/RoundedRect。 这有点像那些彩票,如果

我正在制作一个iPhone应用程序,其中有两个图像视图,当你触摸顶部的图像视图时,无论你点击哪里,底部的图像视图就会显示出来

基本上,我想做的是从图像中剪切出一个椭圆/圆形。要做到这一点,我想要么剪切图像,要么将矩形中的alpha像素改为零。我是新的石英二维编程,所以我不知道如何做到这一点

假设我有:

UIImageView *topImage;
UIImageView *bottomImage;
如何从这些图像中删除CGRect/eliple/RoundedRect。
这有点像那些彩票,如果你中奖了,你必须刮掉才能显示出来。

我通常会尝试从路径(这里包含一个圆角矩形)制作一个遮罩,然后用它遮罩图像,如图所示。这样做的好处之一是,对于命中测试,您所需要做的就是使用被触摸的点(例如,它将测试它是否位于图像的可见区域)创建CGPathContainsPoint。

我尝试了以下代码:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect frame = CGRectMake(100, 100, 100, 100);
CGPathRef roundedRectPath = [self newPathForRoundedRect:frame radius:5];
CGContextAddPath(ctx, roundedRectPath);
CGContextClip (ctx);
CGPathRelease(roundedRectPath);
(连同您发送的圆角矩形路径函数)
这是在白色视图上,视图下方有一个灰色窗口,所以我认为这将在CGRect框架中显示灰色而不是白色,但它没有做任何事情…

那么我应该在drawrect方法中添加什么呢?我对Quartzso没有经验,文档中关于实际剪辑的部分在底部(抱歉,我忘了提到这一点),但基本上创建一条路径,在需要的地方绘制一个圆角矩形,将上下文剪辑到路径,绘制图像,(解开路径?),然后继续。我没有包括具体的代码,因为它是不必要的,只是在apple文档中查找函数调用。谷歌也是。下面是我尝试过的圆形rect路径代码:CGContextRef ctx=UIGraphicsGetCurrentContext();CGRect帧=CGRectMake(100100100100);CGPathRef roundedRectPath=[self-newPathForRoundedRect:帧半径:5];CGContextAddPath(ctx,roundedRectPath);CGContextClip(ctx);CGPathRelease(roundedRectPath);(连同您发送的圆角矩形路径函数)这是在白色视图上,视图下方有一个灰色窗口,因此我认为这将在CGRect框架中显示灰色而不是白色,但它没有做任何事情…您需要在上下文剪辑和路径释放之间放置您实际想要绘制的内容(如画图像,可能在‘框架’中),好吧,我试着在发布路径之前添加这个:[ButoMime]图像DrWrRunt:Frime];它所做的只是在帧中再次绘制图像……这不是我想要做的。我想从图像中剪切出帧。这样在图像中间有一个透明的空间。