нарисуйте ios кварц 2d путь с изменяющимся альфа-компонентом - PullRequest
0 голосов
/ 06 февраля 2011

Я хотел бы нарисовать некоторые кривые Безье с альфа-каналом, который изменяется во время рисования кривой. Прямо сейчас я могу рисовать безье пути с фиксированным альфа-каналом. Я хотел бы нарисовать одну кривую Безье, которая использует определенное значение альфа-канала для первых n точек пути, другое, альфа-значение для последующих m точек и так далее. Код, который я использую для рисования пути Безье:

CGContextSetStrokeColorWithColor(context, curva.color.CGColor);
....
CGContextAddCurveToPoint(context, cp1.x, cp1.y, cp2.x, cp2.y, endPoint.x, endPoint.y);
....
CGContextStrokePath(context);

Есть ли способ достичь того, что я описываю?

Большое спасибо, Giovanni

Ответы [ 2 ]

0 голосов
/ 08 марта 2014

Существует гораздо более простой способ сделать то, что вы пытаетесь сделать:

  1. Создайте градиентное изображение с помощью вашего любимого графического редактора (или создайте его вовремя в вашем приложении). Изображение должно иметь высоту 1 пиксель и ширину, равную длине пути, который вы собираетесь обвести.
  2. Заполните изображение своим градиентом. Например, заполните изображение градиентом, имеющим изменяющийся альфа-компонент от 0 слева до 1 справа.
  3. Создайте свой цвет обводки, вызвав [UIColor colorWithPatternImage: patternImage], где изображение шаблона - это UIImage, созданное из изображения градиента.
  4. Используйте цвет рисунка, чтобы обвести ваш путь. Это также работает со слоями. Это применит градиент вдоль пути.
0 голосов
/ 06 февраля 2011

Я полагаю, что вы можете достичь этого эффекта двумя способами:

  • Если вам абсолютно необходимо вычислить альфа во время рисования, вы можете поэкспериментировать с созданием цветного CGPatternRef (http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGPattern/Reference/reference.html) обратный вызов при рисовании проверяет текущий перевод контекста и рисует цвет на основе смещения.Вместо того, чтобы устанавливать цвет обводки, вы должны установить CGContextSetStrokePattern в свой созданный шаблон.

  • Если это уместно для нарисованного объекта, вы можете предварительно вычислить альфа по всему пространству кривой и использоватьCGPathRef в качестве маски для альфа-изображения.

Я должен признать, что я никогда не пытался использовать метод CGPatternRef, поэтому я могу лишь указать на это как на потенциал, а не на определенность.

...