0

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

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

假设我有:

UIImageView *topImage;
UIImageView *bottomImage;

如何从这些图像中删除 CGRect/Ellipse/RoundedRect。这有点像那些你必须刮掉才能显示你是否中奖的彩票。

4

2 回答 2

1

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

于 2010-02-27T23:36:30.893 回答
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 框架中显示灰色而不是白色,但它没有做任何事情.. .

于 2010-02-28T05:11:17.140 回答