2009-09-23 110 views
4

我在drawRect方法中绘制一个圆圈并填充一个颜色。现在我需要给圆圈添加一个发光效果。当我点击一个按钮,圆圈需要发光。我怎样才能做到这一点?任何帮助将不胜感激!向圆圈添加发光效果

在此先感谢!

回答

8

如果您使用Quartz 2D,您可以简单地向圆圈添加白色阴影。

Quartz 2D Programming Guide for Shadows

苹果公司的设立从链接采取了阴影上面的示例代码:

void MyDrawWithShadows (CGContextRef myContext, // 1 
         float wd, float ht); 
{ 
    CGSize   myShadowOffset = CGSizeMake (-15, 20);// 2 
    float   myColorValues[] = {1.0, 1.0, 1.0, .6};// 3 (White shadow colour) 
    CGColorRef  myColor;// 4 
    CGColorSpaceRef myColorSpace;// 5 

    CGContextSaveGState(myContext);// 6 

    CGContextSetShadow (myContext, myShadowOffset, 5); // 7 

    // Your drawing code here!!!!!!!!!!!!!!!! // 8 

    CGContextSetRGBFillColor (myContext, 0, 1, 0, 1); 
    CGContextFillRect (myContext, CGRectMake (wd/3 + 75, ht/2 , wd/4, ht/4)); 

    myColorSpace = CGColorSpaceCreateDeviceRGB();// 9 
    myColor = CGColorCreate (myColorSpace, myColorValues);// 10 
    CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);// 11 
    // Your drawing code here// 12 
    CGContextSetRGBFillColor (myContext, 0, 0, 1, 1); 
    CGContextFillRect (myContext, CGRectMake (wd/3-75,ht/2-100,wd/4,ht/4)); 

    CGColorRelease (myColor);// 13 
    CGColorSpaceRelease (myColorSpace); // 14 

    CGContextRestoreGState(myContext);// 15 
} 

祝你好运!

注释行3上面的意思是你的阴影将是白色的(1.0,1.0,1.0)。 注释行2是阴影偏移量。

+0

上述代码中的关键组件是对CGContextSetShadowWithColor()的调用。第7行和第8行设置了一个黑色的影子,他们可能不想要。我在这个答案中提供了更多关于此的信息:http://stackoverflow.com/questions/1229721/is-there-an-easy-way-or-library-available-to-let-text-glow/1230907# 1230907 – 2009-09-23 12:21:30

+1

非常感谢Brock。它的工作。一个更多的任务,我如何动画这个圈子。其实我需要缓慢的发光效果。这是对于特定的事件,圆形发光,然后返回原始视图,没有任何发光背景。 – diana 2009-09-24 07:13:44

+0

您可以尝试一个带有圆形路径的CAShapeLayer,然后添加一个白色阴影,然后为您的阴影半径设置动画效果。 – nielsbot 2013-08-07 07:01:35

0

您是否尝试过使用UIButton,将圆形圆圈和颜色作为图像?它会自动得到发光的效果,而不需要你做任何工作。

复制精确的发光有点难,因为它实际上是动画,从较小的发光开始,然后在短时间内增长。

如果你想不使用UIButton,使用UIControl或作为视图说,那么你可以拍一个按钮,在Photoshop等图形编辑应用程序中创建一个合适的光晕,然后添加该图像到你的笔尖。当你想要显示发光时,用一个简单的动画将其添加到视图中,该动画使用小尺寸变换使其发出一次脉冲。

祝你好运!