fast algorithm for drawing filled circles?

前端 未结 10 1138
清歌不尽
清歌不尽 2020-12-02 07:28

I am using Bresenham\'s circle algorithm for fast circle drawing. However, I also want to (at the request of the user) draw a filled circle.

Is there a fast and effi

10条回答
  •  温柔的废话
    2020-12-02 08:06

    You can use this:

    void DrawFilledCircle(int x0, int y0, int radius)
    {
        int x = radius;
        int y = 0;
        int xChange = 1 - (radius << 1);
        int yChange = 0;
        int radiusError = 0;
    
        while (x >= y)
        {
            for (int i = x0 - x; i <= x0 + x; i++)
            {
                SetPixel(i, y0 + y);
                SetPixel(i, y0 - y);
            }
            for (int i = x0 - y; i <= x0 + y; i++)
            {
                SetPixel(i, y0 + x);
                SetPixel(i, y0 - x);
            }
    
            y++;
            radiusError += yChange;
            yChange += 2;
            if (((radiusError << 1) + xChange) > 0)
            {
                x--;
                radiusError += xChange;
                xChange += 2;
            }
        }
    }
    

提交回复
热议问题