У меня есть CGPath
в форме стрелки, которую я рисую в CGContext
моего текущего вида. Я хотел бы создать миниатюрный вариант (уменьшенное изображение) стрелки, чтобы добавить его как Image
в UITableView
, где показаны все выбранные стрелки.обрезка области CGRect от UIGraphicsImageContext
Я преуменьшаю картину полного контекста, который оставляет стрелку меньше, чем она должна быть. В идеале я хотел бы обрезать образ полного контекста до границ стрелки. Однако я еще не успел. Любые вести? Спасибо за помощь!
Вот изображение полного вида, содержащего стрелу и другую фотографию эскиза, который я генерирую.
В идеале выше эскиз будет обрезан, чтобы содержать только стрелку - не полный контекст.
код я использую это происходит некорректно:
- (UIImage*) imageForObject:(id<GraphicalObject>) object
inRect:(CGRect)rect {
UIImage *image = [UIImage new];
CGRect objectBounds = [object objectBounds];
UIGraphicsBeginImageContext(self.view.frame.size);//objectBounds.size);
CGContextRef context =UIGraphicsGetCurrentContext();
[object drawInContext:context];
//doesn't work
CGContextClipToRect(context, objectBounds);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Спасибо - это работает для cgpath - однако тогда мне нужно будет заполнить его градиентом. – user1612877
@ user1612877 Используйте '[object drawInContext: context]' вместо '[object stroke]'. Я использовал простой 'UIBezierPath' для тестирования, так как у меня нет кода, который рисует стрелку. – user3386109
Спасибо, что работает для меня. Для целесообразности я хотел бы сказать, что мне пришлось различать четыре случая при рисовании стрелки, где в зависимости от квадранта, на который указывает стрелка, последние два аргумента функции CGContextTranslateCTM(), необходимые для изменения между всеми возможными комбинациями 0/- objectBounds.origin.x, 0/-объектBounds.origin.y – user1612877