2009-08-04 2 views
11

Я хотел бы сделать светящийся текст, который выглядит, если он сияет или пропускает свет. На самом деле это будет сделано с некоторой размытой в фоновом режиме. Но я ничего не нашел в iPhone SDK, который бы это сделал.Есть ли простой способ или библиотека, доступная, чтобы позволить светить?

+0

Если вы имеете в виду что-то вроде этого: http://activeden.net/item/xml-text- progressive-light-glow-effect/47740 ... Я тоже ищу это. Я загрузил версию Flash, но использует API-запросы, специфичные для Flash (в частности, DropShadowFilter и ColorTransform (с смешиванием), которые, как я знаю, не входят в Quartz ... –

ответ

21

Вы можете сделать это, используя чистый кварцевый рисунок. В -drawRect: для UIView или -renderInContext: для CALayer, следующий код будет использовать текст и применить свечение вокруг него:

CGContextSetShadowWithColor(context, CGSizeMake(0.0, 0.0), 20.0f, glowColor); 

[text drawAtPoint:CGPointMake(0.5f, 0.5f) withFont:[UIFont fontWithName:@"Helvetica" size:16.0f]]; 

где текст является NSString и glowColor является CGColorRef для свечения вы хотите подать заявку. В этом примере будет показано свечение, которое вытесняет 20 пикселей из 16-позиционного текста Helvetica и центрируется по тексту.

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

+0

Звучит неплохо! Это почти так, как я хотел бы попробовать в векторной графической программе. Поэтому, когда я получу это право, мой текст не должен быть слишком длинным, потому что свечение - это в основном масштабированная версия текст, где наиболее центральные пиксели находятся выше eachother, а самые левые/правые отличаются в основном от их клонов внизу, правильно? – 2009-08-05 09:11:18

+0

btw: можно ли использовать эту технику для применения свечения на любом содержимом вида? afaik a UIView имеет кэшированное изображение как контент, где эффект может быть применен, чтобы заставить everythig выглядеть размытым ... я бы сказал, что для этого нужен какой-то гауссовский алгоритм, но это, вероятно, другой вопрос. – 2009-08-05 09:13:08

+0

Это должно применить свечение к контуру любого векторного содержания кварца, которое вы рисуете после вызова CGContextSetShadowWithColor(). Для содержимого изображения он, скорее всего, просто начнет светиться вокруг границ изображения. Чтобы размыть контент, вам, вероятно, нужно будет нарисовать его как векторы, но оставить цвет штриха как совершенно прозрачный. Таким образом, только тень покажет. –

2

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

Затем вы можете нарисовать буфер, где бы он ни находился.

См. Также ответы на вопросы "How do I create blurred text in an iPhone view?", которые предполагают, что у Cocoa Touch отсутствуют какие-либо встроенные фильтры размытия. Вы можете написать свое, конечно.

+0

Да, это хорошая идея. есть библиотека, которая делает именно это. – 2009-08-04 22:37:10

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