2009-09-23 81 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等圖形編輯應用程序中創建一個合適的光暈,然後添加該圖像到你的筆尖。當你想要顯示發光時,用一個簡單的動畫將其添加到視圖中,該動畫使用小尺寸變換使其發出一次脈衝。

祝你好運!