Как я могу обрезать или изменить альфа изображения (пикселей) в Кварце? - PullRequest
0 голосов
/ 28 февраля 2010

Я работаю над созданием приложения для iPhone, в котором есть два ImageViews, и когда вы касаетесь верхнего, куда бы вы ни нажали, вместо этого отображается нижний.

По сути, я хочу вырезать эллипс / закругленную прямую из изображения. Для этого я думал об обрезании изображения или изменении альфа-пикселей в прямоугольнике на ноль. Я новичок в Quartz 2D Programming, поэтому я не уверен, как это сделать.

Предполагая, что у меня есть:

UIImageView *topImage;
UIImageView *bottomImage;

Как мне удалить CGRect / Ellipse / RoundedRect из этих изображений. Это похоже на те лотерейные билеты, которые нужно вычеркнуть, чтобы узнать, выиграл ли ты.

Ответы [ 2 ]

1 голос
/ 28 февраля 2010

Я бы обычно пытался создать маску из контура (здесь, содержащего скругленный прямоугольник), а затем замаскировать изображение, как показано в apple docs . Одним из преимуществ этого является то, что для тестирования попаданий все, что вам нужно сделать, это CGPathContainsPoint с точкой, к которой вы прикоснулись (так как в ней будет проверяться, находилась ли она в видимой области изображения).

0 голосов
/ 28 февраля 2010

Я попробовал этот код:

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 будет просто показано серый вместо белого, но ничего не получилось ...

...