Linux C 显示一张图片,或者 位图,方法 不少,可以利用图形库,但我还是比较喜欢折腾 framebuffer,原理很简单,就是利用画像素点的原理.
图片无非就是 一个个像素点拼接在一起,所以说 我们只需要把 图片的每一个像素点打印到屏幕下就可以了。
Linux下应该有直接把 图片解码成像素点的 方法,这也是我下一步 想要研究的东西,之前我做linux下图形游戏的 东西,都是先用PS画出图形,然后利用Windows下图形取模工具,把每一个像素点的颜色信息存储到一个超大的数组里面。再linux下只需要把数组的颜色打印到屏幕即可:
下面举例 我做的贪吃蛇的蛇头如何显示的吧:
再Windows下PS设计蛇头
利用Windows 下 Img2Lcd取模工具
选择打开图片,输出灰度选择24位,这样的话,一个像素点由三个颜色拼接成
点击保存 生成一个文件,文件内容就是一个数组 const unsigned char gImage_snake1[4800]
数组大小 4800 ,4800 / 3 = 1600 ,因为是三个元素是一个像素点,所以这个数组是表示1600个像素点,因为分辨率是40×40 所以正好是1600
接下来就是拷贝文件到linux下,我们把它改成*.h头文件,这样程序可以直接引用啦。
剩下的就是写一个 显示图片的函数了,即使以后其他程序使用,直接复制过来即可!
void draw_tupian(int x,int y,int width,int lenth,const unsigned char *tu)
{
int i;
for(i=0;i<width*lenth;i++)
{
if(tu[i*3]*0x10000+tu[i*3+1]*0x100+tu[i*3+2]!=0xffffff)
p[(x+i/width)*Y+y+i%width]=tu[i*3+2]*0x10000+tu[i*3+1]*0x100+tu[i*3];
}
}
这里的内容对我真的帮助很大。哈哈,多谢多谢。