Рисование округлой тени с помощью Quartz - PullRequest
1 голос
/ 12 октября 2009

Я пытаюсь нарисовать тень под изображением, к которому применяю закругленные углы, но у меня есть 2 проблемы:

  1. Тень отбрасывания появляется только под округленной областью округленного изображения, а не под нижними закругленными углами, как это было бы при применении тени в фотошопе.

  2. Использование тех же настроек, что и в фотошопе (смещение по оси 2, 1 размытие и 85% черного), приводит к гораздо более темной тени, которая выглядит не так размыто, как следовало бы.

Любая помощь будет оценена, пожалуйста.

float myColorValues[] = {0, 0, 0, 0.85};
    CGColorRef myColor = CGColorCreate(colorSpace, myColorValues);
    CGContextSetShadowWithColor(context, CGSizeMake(0, -2), 2, myColor);

    // Draw a round corner path
    CGContextBeginPath(context);
    CGRect rect = CGRectMake(0, 0, 68, 68);
    addRoundedRectToPath(context, rect, cornerWidth, cornerHeight);
    CGContextClosePath(context);
    CGContextClip(context);

    CGContextDrawImage(context, CGRectMake(1, 2, 70, 70), imageScaledAndCropped);

1 Ответ

2 голосов
/ 24 июля 2010

Решение состоит в том, чтобы нарисовать округлый контур Безье под изображением и наложить на него тень.

...