SDL2绘制和填充形状

时间:2016-05-28 16:14:35

标签: c++ sdl-2

如何绘制不同的形状(矩形和直线除外)并使用C ++中的SDL2填充它们?我尝试使用SDL2_gfx,但我无法编译SDL2_gfx,所以我无法尝试。我找到了一个编译的SDL_gfx,但由于我使用渲染器而不是表面,我无法使用它。绘制多边形很简单,我可以计算点和绘制线,但我如何填充它们?我该如何绘制圆圈?

如果有人有编译的SDL2_gfx(与SDL2_ttf和SDL2_image相同)那么你可以将它发送给我吗?

1 个答案:

答案 0 :(得分:1)

如果要填充多边形,快速谷歌搜索会提供有效的算法here。或者复制SDL2_gfx的方式,因为您可以访问源?

对于绘制圆圈,the Midpoint Circle algorithm甚至会给出一些代码:

void DrawCircle(int x0, int y0, int radius)
{
    int x = 0, y = radius;
    int dp = 1 - radius;
    do
    {
        if (dp < 0)
            dp = dp + 2 * (++x) + 3;
        else
            dp = dp + 2 * (++x) - 2 * (--y) + 5;

        putpixel(x0 + x, y0 + y, 15);     //For the 8 octants
        putpixel(x0 - x, y0 + y, 15);
        putpixel(x0 + x, y0 - y, 15);
        putpixel(x0 - x, y0 - y, 15);
        putpixel(x0 + y, y0 + x, 15);
        putpixel(x0 - y, y0 + x, 15);
        putpixel(x0 + y, y0 - x, 15);
        putpixel(x0 - y, y0 - x, 15);

    } while (x < y);
}

但真正要做的是寻求帮助来解决编译SDL2_gfx的问题。最糟糕的是,您不能直接将SDL2_gfx的源文件放在项目中吗?您只能将四个文件放在项目的子文件夹中。