之前的SDL的两篇文章我向大家介绍了如何编译使用 SDL,以及如何才能让窗口显示出来。想了解相关内容的同学可以点击下面的链接查看相关内容。
本文将向大家介绍一下,如何通过 SDL 绘制一些基本图形,如 点、线、矩形。了解了这些基本图形后,你就可以按照搭积木的方式,构造出其它更复杂的图形了。
有哪些基本图形可以绘制
SDL中绘制基本图形的 API并不多,主要是 点、线、矩形。其它图形都可以通过 点、线、矩形组合出来。
- 设置颜色:在绘制图形前,要设置一下画笔的色彩。这里需要注意的是,如果画笔与背景色相同了,那在窗口中是显示不出来图形的。
- 画点。
- 画线。
- 画矩形。
- 填充矩形。
下面来详细介绍一下这几个API。
API详细介绍
设置颜色
1
2
3
4
5int SDL_SetRenderDrawColor(SDL_Renderer* renderer,
Uint8 r,
Uint8 g,
Uint8 b,
Uint8 a)该函数中的参数 a 指明了颜色的透明度。
但该值我设置了一下没有起作用,应该需要和BlendMode一起才能起作用。这块有谁清楚可以指定一下
画点
1
2
3int SDL_RenderDrawPoint(SDL_Renderer* renderer,
int x,
int y)画多个点
1
2
3int SDL_RenderDrawPoints(SDL_Renderer* renderer,
const SDL_Point* points,
int count)- points: 点数组。
- count: 点的个数。
画线
1
2
3
4
5int SDL_RenderDrawLine(SDL_Renderer* renderer,
int x1,
int y1,
int x2,
int y2)画多条线
1
2
3int SDL_RenderDrawLines(SDL_Renderer* renderer,
const SDL_Point* points,
int count)该函数会将使用两个相邻的点之间进行连线。最终画出你想画的图形。如画三角形,多边形或圆形。
绘制矩形
1
2int SDL_RenderDrawRect(SDL_Renderer* renderer,
const SDL_Rect* rect)rect: 是要绘制的一块区域。它包括,x,y,w,h这个元素。
填充矩形
1
2int SDL_RenderFillRect(SDL_Renderer* renderer,
const SDL_Rect* rect)使用指定的色彩填充一块矩形。
填充多块矩形
1
2
3int SDL_RenderDrawRects(SDL_Renderer* renderer,
const SDL_Rect* rects,
int count)- rects: 指定的矩形数组。
- count: 指定矩形个数。
我们来看看代码
下面的代码非常之简单,我们在上一篇文章代码的基础上增加了几个画线、画矩形的API就可以了。
这里唯一值得注意的地方是下面这个函数。
1 | SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255); |
该函数是设置画笔颜色,也就是说我们想画出什么颜色的图形,只要用这个函数设置一下,再使用画点、画线的API就可以画出对应颜色的图形了。
原码如下:
1 | #include "SDL.h" |
小结
本文重点介绍了 SDL 绘制经常使用的几个基本图形API,通过这些API你可以构造出更加复杂的图形。
希望本文能对你所有帮助,谢谢!