UIBezierPath: сделать изображение только для рисования - PullRequest
0 голосов
/ 11 мая 2018

Я создаю изображение из рисунка свободной рукой, используя следующий код:

UIGraphicsBeginImageContext(self.bounds.size);
for (UIBezierPath *path in self.pathArray) {
    [self.lineColor setStroke];
    [path stroke];
}

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Я хочу получить изображение только черных линий (рисунок), а не весь вид.Вид размером 300х300.Но если мой рисунок 50х50, я хочу сосредоточиться только на этой части.

Я пробовал с

UIGraphicsBeginImageContext(signPath.bounds.size);

signPath - это UIBezierPath объект.Но с этим я получаю пустое изображение.

Есть предложения?

1 Ответ

0 голосов
/ 14 мая 2018

хорошо, я понял это.

UIGraphicsBeginImageContext(signPath.bounds.size);

Таким образом, я создавал только размер контекста изображения, а источник отсутствовал. Поэтому мне нужно создать контекст изображения с x and y (origins).

У меня есть происхождение в UIBezierPath с size.

Код:

    CGSize size = signPath.bounds.size;
    size = CGSizeMake(size.width + 10, size.height + 10);
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
    CGContextRef c = UIGraphicsGetCurrentContext();

    CGContextConcatCTM(c, CGAffineTransformMakeTranslation(-signPath.bounds.origin.x + 5, -signPath.bounds.origin.y + 5));
    [self.layer renderInContext:c];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

Я указал статические значения для некоторого отступа (с учетом некоторого пространства) при создании изображения.

Не уверен, что это стандартный способ, но это решило мою проблему, и я могу создать изображение для рисования от руки в виде 500x500. Теперь я получаю изображение моей свободной руки (Strokes) не для всего вида.

...