如何在Quartz中剪辑或更改图像的alpha(像素)?

时间:2010-02-27 23:14:12

标签: objective-c quartz-graphics alpha mask quartz-2d

我正在制作一款iPhone应用程序,其中有两个ImageView,当你触摸顶部的那个时,无论你在哪里点击,底部都会显示。

基本上我想做的是从图像中剪切椭圆/圆角。为此,我想要剪切图像,或将矩形中的alpha像素更改为零。我是Quartz 2D Programming的新手,所以我不知道该怎么做。

假设我有:

UIImageView *topImage;
UIImageView *bottomImage;

如何从这些图像中删除CGRect / Ellipse / RoundedRect。 这有点像那些你必须要刮掉的彩票,以揭示你是否赢了。

2 个答案:

答案 0 :(得分:1)

我通常会尝试从路径(这里包含一个圆角矩形)制作一个蒙版,然后用它来掩盖图像,如apple docs中所示。这样做的好处之一是,对于命中测试,你需要做的只是CGPathContainsPoint与被触摸的点(因为它将测试它是否在图像的可见区域)。

答案 1 :(得分:0)

我试过这段代码:

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框架中显示灰色而不是白色但是它没有做任何事情......