【发布时间】:2010-11-30 15:50:51
【问题描述】:
我在 drawRect 方法中画了一个圆并用颜色填充它。现在我需要为圆圈添加发光效果。当我点击一个按钮时,圆圈需要发光。我怎样才能做到这一点?任何帮助将不胜感激!
提前致谢!!!
【问题讨论】:
标签: iphone uiview core-graphics
我在 drawRect 方法中画了一个圆并用颜色填充它。现在我需要为圆圈添加发光效果。当我点击一个按钮时,圆圈需要发光。我怎样才能做到这一点?任何帮助将不胜感激!
提前致谢!!!
【问题讨论】:
标签: iphone uiview core-graphics
如果您使用的是 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 行是阴影偏移。
【讨论】:
您是否尝试过使用 UIButton,将圆形和颜色作为其图像?它会自动获得发光效果,无需您进行任何操作。
复制精确的光晕有点困难,因为它实际上是动画的,从较小的光晕开始,然后在短时间内增长。
如果您想在没有 UIButton 的情况下执行此操作,例如使用 UIControl 或作为视图,那么您可以拍摄您的按钮,在 Photoshop 等图形编辑应用程序中创建合适的发光效果,然后将该图像添加到你的笔尖。当您想要显示发光时,通过一个简单的动画将其添加到视图中,该动画使用小尺寸变换使其脉冲一次。
祝你好运!
【讨论】: