试图绘制一个圆圈,但它有一个黑色的背景

时间:2014-12-05 11:21:13

标签: ios uiview core-graphics drawrect cgcontext

我想绘制一个具有特定颜色的圆圈,这将填满整个圆圈。我正在使用自动布局来确定圆的大小。如果我这样做,则绘制圆圈,但背景颜色为黑色。它应该是一个清晰的颜色,以便背景可以透过,圆圈当然应该是圆的。这是我在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 个答案:

答案 0 :(得分:1)

似乎我必须把这个

this.BackgroundColor = UIColor.Clear;

进入构造函数。现在我不再有黑色背景了。

似乎也可以使用这些代码行进行绘图:

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