2
使用重疊的不同顏色繪製相同形狀時,出現問題。在啓用對生成的透明像素進行抗鋸齒滲透並導致如this image中的僞像時。她正在繪製一個紅色的圓圈,繪製一個藍色的三角形,然後繪製一個紅色的三角形。在使用不同顏色的drawRect中繪製重疊形狀時,會啓用邊緣滲色
此問題可以通過禁用反鋸齒解決,但結果是醜陋的鋸齒狀邊緣。
是否有例如解決方案,我可以追溯性地對圖像上下文進行反向別名或渲染圖像和反鋸齒。或其他任何可以幫助我繪製邊緣清晰的重疊形狀的東西。
這裏是重現問題
-(void)drawRect:(CGRect)rect
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextClearRect(currentContext, rect);
CGContextSetAllowsAntialiasing(currentContext, YES);
//// Color Declarations
UIColor* color = [UIColor redColor];
UIColor* color2= [UIColor blueColor];
//// Oval Drawing
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: rect];
[color setFill];
[ovalPath fill];
//// triangle Drawing
UIBezierPath* trianglePath = [UIBezierPath bezierPath];
[trianglePath moveToPoint: CGPointMake(0, 0)];
[trianglePath addLineToPoint: CGPointMake(rect.size.width, rect.size.height)];
[trianglePath addLineToPoint: CGPointMake(0, rect.size.height)];
[trianglePath addLineToPoint: CGPointMake(0, 0)];
[trianglePath closePath];
[color2 setFill];
[trianglePath fill];
[color setFill];
[trianglePath fill];
}
謝謝,我在openGL中設置了相同的圖形,它解決了我的問題,即使啓用了多重採樣,也沒有可見的邊緣出血。 – TimPelgrim