2014-12-05 6 views
1

전체 원을 채우는 특정 색상의 원을 그려야합니다. 원의 크기를 결정하기 위해 자동 레이아웃을 사용하고 있습니다. 이 작업을 수행하면 원이 그려 지지만 배경색은 검정색입니다. 배경이 빛나고 원은 물론 원형이되도록 선명한 색상이어야합니다. 이것은 C#의 코드입니다. 그러나 Objective-C와 큰 차이는 아닙니다.채워진 원을 그리려하지만 검정색 배경이 있습니다.

public class Circle : UIView 
    { 
     private UIColor color; 

     public Circle() 
     { 
      this.color = UIColor.Red; 
     } 

     public override void Draw (RectangleF rect) 
     { 
      base.Draw (rect); 

      this.BackgroundColor = UIColor.Clear; 

      float red = 0; 
      float green = 0; 
      float blue = 0; 
      float alpha = 0; 
      color.GetRGBA (out red, out green, out blue, out alpha); 

      float lineWidth = 2.0f; 
      RectangleF borderRect = RectangleF.Inflate (rect, -lineWidth/2, -lineWidth/2); 

      // Get the context 
      CGContext context = UIGraphics.GetCurrentContext(); 

      // Set the border width 
      context.SetLineWidth (lineWidth); 

      // Set the circle fill color 
      context.SetRGBFillColor (red, green, blue, alpha); 

      // Set the circle border color 
      context.SetRGBStrokeColor (red, green, blue, alpha); 

      // Fill the circle with the fill color 
      context.FillEllipseInRect (borderRect); 

      // Draw the circle border 
      //context.StrokeEllipseInRect (borderRect); 
     } 
    } 
} 

원이되도록 정확하게 모서리에 닿지 않으면 (그래서 일부의 절단)를 렌더링하는 UIView보다 약간 작다.

하지만 당신은 여기에서 볼 수있는 배경이 검은 색 : circle with black background

가 어떻게 채워진 원을 그릴 수 있습니까?

답변

1

내가 생성자에이

this.BackgroundColor = UIColor.Clear; 

을 넣어야 할 것 같다. 이제 더 이상 검정색 배경이 없습니다.

그림에 대한 코드 줄을 사용하는 것이 충분하다고도 보인다

context.AddEllipseInRect (rect); 
context.SetFillColor (color.CGColor); 
context.FillPath();