试图画一个实心圆圈,但它有一个黑色的背景

Posted

技术标签:

【中文标题】试图画一个实心圆圈,但它有一个黑色的背景【英文标题】:Trying to draw a filled circle but it has got a black background 【发布时间】:2014-12-05 11:21:12 【问题描述】:

我想用某种颜色画一个圆,填满整个圆。我正在使用自动布局来确定圆圈的大小。如果我这样做,则绘制圆圈但背景颜色为黑色。它应该是一种清晰的颜色,以便背景可以发光,当然圆圈应该是圆形的。这是我用 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 略小,因此可以正确绘制,不接触边缘(因此切割某些部分)。

但是你可以在这里看到背景是黑色的:

如何画一个实心圆?

【问题讨论】:

【参考方案1】:

看来我得放这个

this.BackgroundColor = UIColor.Clear;

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

使用这些代码行绘图似乎也足够了:

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

【讨论】:

以上是关于试图画一个实心圆圈,但它有一个黑色的背景的主要内容,如果未能解决你的问题,请参考以下文章

iPhone App - 为啥我的 CGContext 圆圈看起来像黑色方块?

使用 CALayers 遮罩以在褪色的黑色视图中显示空心圆圈

python海龟画图怎么把背景变成黑色

Python中如何画一个画笔颜色为黄色的五角星,边长为200,画布背景颜色为黑色,画?

Android opengl 画文字,怎么把文字后面的黑色背景去掉

网页制作中,我使用滤镜,把背景颜色黑色半透明了,但它也把我黑色背景上的字体也给半透明了,求高手指...