我在地圖上繪製一些圓,核心戈爾圖形和alpha值
CGContextFillEllipseInRect
這個偉大的工程,但唯一的問題是,我的alpha值設置爲0.5 如果拖車或多個圈子重疊的重疊區域是較暗的,因爲我猜想添加了兩個alpha值。不管圓圈是否重疊,是否有簡單的方法來保持相同的alpha值?
由於
我在地圖上繪製一些圓,核心戈爾圖形和alpha值
CGContextFillEllipseInRect
這個偉大的工程,但唯一的問題是,我的alpha值設置爲0.5 如果拖車或多個圈子重疊的重疊區域是較暗的,因爲我猜想添加了兩個alpha值。不管圓圈是否重疊,是否有簡單的方法來保持相同的alpha值?
由於
如果您正在使用閉合的形狀並將它們全部繪製在相同的直線上(或至少在相同的上下文中),則可以使用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];
繪製圓圈完全不透明,並且視圖/層的不透明度設置爲0.5
。
編輯:
爲了澄清,我想你知道如何停止在半透明度繪製自己的圈子,因爲你設法把它架在首位的方式。所以讓你的圈子的不透明度爲1.0
。然後,通過執行以下操作設置您的視圖的不透明度爲0.5
:
view.alpha = 0.5;
我假設你有一個UIView
子類,所以這可以是在創建視圖在你的代碼的地方,也可能是在你的init方法的子類裏面。所以,如果你從UIView
子類中做這件事,這將是self
,而不是view
:
self.alpha = 0.5;
此外,這將使所有的你在這個視圖做是0.5
不透明繪圖。如果你想讓一些內容完全不透明,有些內容不透明,我可以給你的最簡單的解決方案是有兩個不同的視圖,一個用於半透明內容,另一個用於完全不透明內容。有更好的方法來實現這一點,但爲了方便地交流解決方案,這可能是最簡單的。
你能提供一個簡單的代碼示例嗎?我在覈心圖形和圖層方面有點新鮮。謝謝您的幫助! – jdross
我可能會補充說,我還有其他要點沒有設置任何不透明度。它只是用於圓圈 – jdross
@jdross,你是通過覆蓋'drawRect:'方法在'UIView'中繪製的,還是在繪製到CALayer?'如果您澄清,我可以給你一個更好的代碼示例。此外,這將使得您繪製的所有內容的不透明度都爲0.5。如果你只想用你的一些內容來完成這個,那就更加複雜了。 – Gavin