如何绘制不同的形状(矩形和直线除外)并使用C ++中的SDL2填充它们?我尝试使用SDL2_gfx,但我无法编译SDL2_gfx,所以我无法尝试。我找到了一个编译的SDL_gfx,但由于我使用渲染器而不是表面,我无法使用它。绘制多边形很简单,我可以计算点和绘制线,但我如何填充它们?我该如何绘制圆圈?
如果有人有编译的SDL2_gfx(与SDL2_ttf和SDL2_image相同)那么你可以将它发送给我吗?
答案 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的源文件放在项目中吗?您只能将四个文件放在项目的子文件夹中。