2014-12-05 54 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();