2013-06-01 2 views
1

Я разрабатываю приложение Mac, я хочу нарисовать вид, как радар, я не нахожу метод рисования градиента по дуге. Существующий метод только набирает градиент в направлении одного направления.Как нарисовать градиент вдоль дуги

+0

Градиентный рисунок всегда является дорогостоящим делом, его можно использовать с целью. в вашем случае вы можете использовать изображение. –

+1

Как насчет создания изображения в фотошопе, который выглядит как ваш радар и просто повернуть его? – pmk

+0

Я не хочу использовать изображение, потому что размер радара изменится –

ответ

5

Что вы хотите - это градиент угла. Я написал a Core Image filter that generates an angle gradient; дайте ему непрозрачный цвет (например, зеленый) для цвета начала и полностью прозрачную версию этого цвета для средних и конечных цветов.

Angle gradient with green, transparent green, and transparent green.

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

Дополнительный кредит: в коде ядра для этого фильтра (около начала .m) есть линия, которая запускает градиент с прямым (90 °), а не прямолинейным. Вы можете изменить код как фильтра, так и ядра, чтобы сделать этот параметр (например, inputStartColor и др.), Что со временем вы можете меняться, используя CABasicAnimation или что-то подобное.

+0

+1 Супер решение. –

0

Вам необходимо использовать комбинацию осевых и радиальных градиентов и, возможно, также некоторых обтравочных контуров. Вы можете найти все это задокументированное here.

Вы также можете использовать colorWithPatternImage: для обводки любых линий, которые вы рисуете.

Смежные вопросы