Обрезать некоторую часть изображения (в некоторой форме) в iPhone

#iphone #crop

#iPhone #обрезать

Вопрос:

Что я хочу сделать, это:

У меня есть одно изображение на экране iPhone.

Теперь пользователь проведет пальцем по изображению. Например, он сделает круг, или треугольник, или квадрат, или звезду. (Не беспокойтесь, перемещение будет иметь замкнутый цикл).

Теперь, когда пользователь завершит перемещение, пользователь создаст форму, подобную кругу, треугольнику или чему-либо еще, тогда эта часть изображения должна быть обрезана.

Есть ли у кого-нибудь такая идея или что-нибудь связанное с этим?

Дайте мне знать в случае получения более подробной информации.

Спасибо.

Ответ №1:

Вам следует прочитать руководство по программированию Quartz2D, в котором объясняется, как CoreGraphics может помочь вам в этом.

В частности, есть раздел, посвященный контурам ( NSBezierPaths ), областям отсечения, маскам изображений и многому другому. В вашем случае, возможно, вам понадобится маска, но, вероятно, больше областей обрезки.

Вы также можете использовать контур, чтобы ограничить рисование других объектов в пределах контура, создавая, по сути, область обрезки.

(снимок, который вы видите в документе, представляет собой окно MacOSX, но, конечно, вы можете сделать то же самое на iPhone, документация по Quartz2D довольно универсальна для обеих сред)

Ответ №2:

Это помогает мне

 if (!self.pictureImageViewMasked) {

        UIBezierPath *path = [UIBezierPath bezierPath];
        [path moveToPoint:CGPointMake(0.0, 0.0)];

        [path addLineToPoint:CGPointMake(50.0, 0.0)];
        [path addLineToPoint:CGPointMake(50.0, 50.0)];
        [path addLineToPoint:CGPointMake(0.0, 50.0)];
        [path closePath];

        if (![[self.pictureImageView layer] mask]) {
            [[self.pictureImageView layer] setMask:[CAShapeLayer layer]];
        }
        [(CAShapeLayer*)[[self.pictureImageView layer] mask] setPath:[path CGPath]];

        self.pictureImageViewMasked = YES;

    }