第三章:C4droid编程:SDL2_02:2D绘图&显示图片

Hello, Everyone, 今天我来为你们讲解SDL2显示图片和2D绘图功能。
由于SDL2包装了opengl函数,使得显示图片更加简单,所以难度会低不少。

首先我们先写一个显示图片的程序,首先创建工程:
分别在main.c,Makefile输入以下代码:
接下来讲解新用到的函数
你们可能会发现,我用画笔+画笔&纸的方法讲解,原因在于其操作过程比较像画画;
还有一点,Makefile SDL2链接参数做了一些修改,增加SDL2 其他组件;
编写完程序后,编译执行会发现只有黑屏,原因是没有图片,需要自己制作或复制一个bmp格式的图片。
制作图片,可以用Krita,krita是开源免费的绘画/2D动画制作软件,可以在Windows,macos,Linux,Android/iOS(仅限平板电脑)环境下运行。


画出作品,当然想怎么画就怎么画

制作完成后分别保存bmp和jpg文件,位置为文件夹resources,后面要用到!
再次编译运行后,就可以显示图片了!
还有一个问题你们可能会问,显示图片不是要用绝对路径吗?其实不一定要用绝对路径,这个要看编译出来的可执行文件的位置,相对位置是相对于可执行文件的,因为我用Makefile 编译程序的,执行文件在其文件夹中,而点击主界面中的compile编译出来的文件都在tmpdir中(地址参考第二章配置的环境变量

),在使用前者的相对地址是用不了的,只能用绝对地址。
还有要注意,必须把标签页打到Makefile 在编译才行,不然会因路径错误导致不显示图片!!!
不过我还没讲完,后面还有很多!!!
显示图片还有一种方法,就是使用image组件,所有函数以IMG开头
调用image组件,在#include另起一行输入
在SDL2初始化函数下面添加以下初始化函数
把SDL_LoadBMP替换为IMG_Load,参数中的bmp改jpg。
保存,编译,运行,效果与之前一样。
还有,可以用IMG_LoadTexture,可以节省不少函数!关键代码如下:

以上显示图片就讲到这些,接下来是SDL2 2D绘图。
因为函数太多,所以就不细说了,更多函数可以在官网wiki查看,也可以下载翻译观看(前提是浏览器要有翻译功能)
最终运行效果是显示红绿蓝刷全屏,然后黑屏画3条红绿蓝交叉直线,最后是矩阵画"彩虹"(云宝彩虹色)

