Добавить тень в PNG, используя Какао - PullRequest
4 голосов
/ 30 января 2010

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

Итак, два шага, которые, я думаю, мне нужно было бы сделать:

  • Изолировать форму PNG
  • Нарисуйте фигуру позади PNG, которая размыта, затемнена и смещена.

У меня нет большого опыта рисования в Какао, поэтому любая идея о том, с чего начать, будет высоко ценится!

Скриншот: alt text
(источник: iworkinprogress.com )

Ответы [ 4 ]

3 голосов
/ 31 января 2010

Простейшим способом является вызов CGContextSetShadow в вашем drawRect: до того, как вы начнете рисовать изображения.

- (void)drawRect:(CGRect)invalidRect
{
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetShadow(c, CGSizeMake(5.0f, 5.0f), 5.0f);
    [myImage drawAtPoint:CGPointMake(50.0f, 50.0f)];
}
1 голос
/ 18 марта 2014

Я считаю эту категорию очень полезной: UIImage + Shadow.m

https://gist.github.com/kompozer/387210

0 голосов
/ 30 января 2010

Поскольку вам нужны тени, как будто все они имеют один и тот же источник света ... кажется, что на самом деле вам может быть лучше с представлением OpenGL, которое излучает свет сверху, и изображения будут располагаться немного выше плоской плоскости, чтобы отбрасывать тень на. Я бы искал 3D OpenGL-фреймворки, которые позволили бы вам довольно легко добавлять вещи ...

0 голосов
/ 30 января 2010

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

Эксперимент в Photoshop / Acorn / Pixelmator?

...