2014-01-14 80 views
0

我在地圖上繪製一些圓,核心戈爾圖形和alpha值

CGContextFillEllipseInRect 

這個偉大的工程,但唯一的問題是,我的alpha值設置爲0.5 如果拖車或多個圈子重疊的重疊區域是較暗的,因爲我猜想添加了兩個alpha值。不管圓圈是否重疊,是否有簡單的方法來保持相同的alpha值?

由於

回答

1

如果您正在使用閉合的形狀並將它們全部繪製在相同的直線上(或至少在相同的上下文中),則可以使用UIBezierPath完成所需的操作。

// create a path with a circle 
UIBezierPath* path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(50, 50) radius:50.0f startAngle:0 endAngle:M_PI * 2.0f clockwise:YES]; 

// add another circle to the path 
[path appendPath:[UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100) radius:50.0f startAngle:0 endAngle:M_PI * 2.0f clockwise:YES]]; 

// draw them both, since they are in a single path they will be treated as a single shape 
[path fill]; 
1

繪製圓圈完全不透明,並且視圖/層的不透明度設置爲0.5

編輯:

爲了澄清,我想你知道如何停止在半透明度繪製自己的圈子,因爲你設法把它架在首位的方式。所以讓你的圈子的不透明度爲1.0。然後,通過執行以下操作設置您的視圖的不透明度爲0.5

view.alpha = 0.5; 

我假設你有一個UIView子類,所以這可以是在創建視圖在你的代碼的地方,也可能是在你的init方法的子類裏面。所以,如果你從UIView子類中做這件事,這將是self,而不是view

self.alpha = 0.5; 

此外,這將使所有的你在這個視圖做是0.5不透明繪圖。如果你想讓一些內容完全不透明,有些內容不透明,我可以給你的最簡單的解決方案是有兩個不同的視圖,一個用於半透明內容,另一個用於完全不透明內容。有更好的方法來實現這一點,但爲了方便地交流解決方案,這可能是最簡單的。

+0

你能提供一個簡單的代碼示例嗎?我在覈心圖形和圖層方面有點新鮮。謝謝您的幫助! – jdross

+0

我可能會補充說,我還有其他要點沒有設置任何不透明度。它只是用於圓圈 – jdross

+0

@jdross,你是通過覆蓋'drawRect:'方法在'UIView'中繪製的,還是在繪製到CALayer?'如果您澄清,我可以給你一個更好的代碼示例。此外,這將使得您繪製的所有內容的不透明度都爲0.5。如果你只想用你的一些內容來完成這個,那就更加複雜了。 – Gavin