2013-03-29 1 views
2

겹치는 다른 색상으로 같은 모양으로 그리는 데 문제가 있습니다. 앤티 앨리어싱을 활성화하면 생성 된 투명 픽셀이 흐려져 this image의 아티팩트가 발생합니다. 그녀는 빨간색 원을 그려서 파란색 삼각형을 그려 빨간색 삼각형을 그립니다.다른 색상의 drawRect에서 모양을 겹쳐서 그리면 앤티 앨리어싱을 사용할 때 가장자리가 흐려집니다.

이 문제는 앤티 앨리어싱을 비활성화하면 해결할 수 있지만 결과는 지그재그 모양으로 나타납니다.

예를 들어 그래픽 컨텍스트에 역대로 앤티 앨리어싱을 적용하거나 이미지에 이미지를 렌더링하고 앤티 앨리어싱을 적용 할 수있는 솔루션이 있습니까? 아니면 선명한 가장자리로 겹쳐진 모양을 그리는 데 도움이되는 다른 것. 여기

는 문제의 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]; 
} 

답변

1

에게 다시하는 코드이며, 각각의 방법은 이전을 통해 렌더링립니다. 도태는 없습니다.

실제로이 문제를 해결하려면 렌더링 패스가 하나 밖에없는 OpenGL을 사용하여 숨겨진 개체가 렌더링되지 않도록 할 수 있습니다.

+0

감사합니다. OpenGL에서 같은 그림을 설정하고 멀티 샘플링을 사용하더라도 에지 블리딩이 보이지 않습니다. – TimPelgrim

관련 문제