【问题标题】:Adding glowing effect to the circle为圆圈添加发光效果
【发布时间】:2010-11-30 15:50:51
【问题描述】:

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

提前致谢!!!

【问题讨论】:

    标签: iphone uiview core-graphics


    【解决方案1】:

    如果您使用的是 Quartz 2D,您可以简单地为圆圈添加一个白色阴影。

    Quartz 2D Programming Guide for Shadows

    Apple 用于设置阴影的示例代码取自上述链接:

    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 行是阴影偏移。

    【讨论】:

    • 上述代码中的关键部分是对CGContextSetShadowWithColor()的调用。第 7 行和第 8 行设置了一个黑色阴影,这可能是他们不想要的。我在这个答案中提供了更多信息:stackoverflow.com/questions/1229721/…
    • 非常感谢布洛克。它奏效了。还有一个任务,我怎样才能为这个圈子设置动画。实际上我需要缓慢的发光效果。也就是说,对于特定事件,圆圈会发光,然后它会返回原始视图,没有任何发光背景。
    • 你可以尝试一个带有圆形路径的 CAShapeLayer,然后添加一个白色阴影,然后为你的阴影半径设置动画。
    【解决方案2】:

    您是否尝试过使用 UIButton,将圆形和颜色作为其图像?它会自动获得发光效果,无需您进行任何操作。

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

    如果您想在没有 UIButton 的情况下执行此操作,例如使用 UIControl 或作为视图,那么您可以拍摄您的按钮,在 Photoshop 等图形编辑应用程序中创建合适的发光效果,然后将该图像添加到你的笔尖。当您想要显示发光时,通过一个简单的动画将其添加到视图中,该动画使用小尺寸变换使其脉冲一次。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-14
      • 2011-06-20
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多