欢迎光临散文网 会员登陆 & 注册

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

2022-11-11 21:00 作者:PonyLinuxlife  | 我要投稿

Hello, Everyone, 今天我来为你们讲解SDL2显示图片和2D绘图功能。

由于SDL2包装了opengl函数,使得显示图片更加简单,所以难度会低不少。

首先我们先写一个显示图片的程序,首先创建工程:

分别在main.c,Makefile输入以下代码:

接下来讲解新用到的函数

你们可能会发现,我用画笔+画笔&纸的方法讲解,原因在于其操作过程比较像画画;

还有一点,Makefile SDL2链接参数做了一些修改,增加SDL2 其他组件;

编写完程序后,编译执行会发现只有黑屏,原因是没有图片,需要自己制作或复制一个bmp格式的图片。

制作图片,可以用Krita,krita是开源免费的绘画/2D动画制作软件,可以在Windows,macos,Linux,Android/iOS(仅限平板电脑)环境下运行。

开屏logo
krita主界面

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

画好的图(不是太好)

制作完成后分别保存bmp和jpg文件,位置为文件夹resources,后面要用到!

再次编译运行后,就可以显示图片了!

还有一个问题你们可能会问,显示图片不是要用绝对路径吗?其实不一定要用绝对路径,这个要看编译出来的可执行文件的位置,相对位置是相对于可执行文件的,因为我用Makefile 编译程序的,执行文件在其文件夹中,而点击主界面中的compile编译出来的文件都在tmpdir中(地址参考第二章配置的环境变量

),在使用前者的相对地址是用不了的,只能用绝对地址。

还有要注意,必须把标签页打到Makefile 在编译才行,不然会因路径错误导致不显示图片!!!

不过我还没讲完,后面还有很多!!!

显示图片还有一种方法,就是使用image组件,所有函数以IMG开头

调用image组件,在#include另起一行输入

在SDL2初始化函数下面添加以下初始化函数

把SDL_LoadBMP替换为IMG_Load,参数中的bmp改jpg。

保存,编译,运行,效果与之前一样。

还有,可以用IMG_LoadTexture,可以节省不少函数!关键代码如下:

以上显示图片就讲到这些,接下来是SDL2 2D绘图。

因为函数太多,所以就不细说了,更多函数可以在官网wiki查看,也可以下载翻译观看(前提是浏览器要有翻译功能)

最终运行效果是显示红绿蓝刷全屏,然后黑屏画3条红绿蓝交叉直线,最后是矩阵画"彩虹"(云宝彩虹色)


第三章:C4droid编程:SDL2_02:2D绘图&显示图片的评论 (共 条)

分享到微博请遵守国家法律