Создание шаблона на лету? - PullRequest
       2

Создание шаблона на лету?

3 голосов
/ 19 февраля 2012

Есть ли способ динамического создания цветного рисунка заливки в Какао?

В частности, вместо использования фиксированного рисунка из файла изображения через

NSColor *fillPattern = [NSColor colorWithPatternImage:patternImage];

Я бы хотелсоздать шаблон, динамически выбирая соответствующие цвета во время выполнения.Фон выделяет цветной объект путем рендеринга полос или квадратов в «противоположном» цвете поверх него - что бы ни значило напротив в этом контексте, но это другая история ..

Применительно к потенциально сотням объектов в приложении для рисования это должен быть довольно быстрый метод, поэтому я полагаю, что просто поменять цвета в patternImage будет недостаточно.

( Он отлично работал в QuickDraw ..! )

Ответы [ 2 ]

5 голосов
/ 19 февраля 2012

Почему бы просто не нарисовать изображение в памяти и использовать его для своего шаблона?

NSImage* patternImage = [[NSImage alloc] initWithSize:someSize];
[patternImage lockFocus];
//draw your pattern
[patternImage unlockFocus];
NSColor* patternColor = [NSColor colorWithPatternImage:patternImage];
//do something with the pattern color
//remember to release patternImage if you're not using ARC

С точки зрения производительности, вы, как правило, должны смотреть на оптимизацию рисования, обращая внимание на прямоугольник, переданный в drawRect: и следя за тем, чтобы вы рисовали только то, что необходимо. Если вы сделаете это, то я не вижу, чтобы производительность при рисовании шаблонов была главной проблемой.

1 голос
/ 20 февраля 2012

Фон выделяет цветной объект путем рендеринга полос или квадратов в «противоположном» цвете поверх него - что бы противоположное ни значило в этом контексте, но это другая история ..

Вы захотите использовать один из режимов наложения кварца (большинство из них присутствуют в Photoshop, Pixelmator и Opacity, поэтому вы можете поэкспериментировать в одном из этих приложений, чтобы определить, какой вам нужен).

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

Там нет никакого способа сделать это только в AppKit;вам нужно получить CGContext от текущего NSGraphicsContext и сделать это в Кварце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...