要想实现图片或动画,首先和我们先要知道如何画点、画线、画矩形
注意:编写完代码后实现效果需要回到Ubuntu虚拟机最原始的页面:
这条博客有详细讲解怎么进入原始页面:
/qq_53287780/article/details/127130458?spm=1001.2014.3001.5501
运行步骤:
1、在终端输入init 3 使终端回到最原始的状态
2、输入密码:每个人ubuntu的密码不一样;我的是1
3、登陆的用户名:
4、密码再输一遍:
5、原始Ubuntu的终端页面;
6、编译及运行:回到文件所在的路径
gcc编译
./运行
7、在原始终端输入 reboot/startx
就可以回到现在版本的Ubuntu界面)
进入正题:
第一步:
(已知条件:大屏幕由1176个像素点构成,小屏幕由800个像素点构成,图片大小为:
)
实现点的绘制
void draw_point(unsigned int *addr, int x, int y, unsigned int color)
{
*(addr + 1176*y + x) = color;
}
实现线条的绘制
void draw_line(unsigned int *addr, int x, int y, int x1, int y1,unsigned int color)
{
if(y == y1) //横线
{
while(x<=x1)
draw_point(addr, x++, y, color);
}
if(x == x1)
{
while(y<=y1)
draw_point(addr, x, y++, color);
}
if(x-x1 == y-y1) //45度
{
while(y<=y1)
draw_point(addr, x++, y++, color);
}
}
实现矩形的绘制
void draw_rect(unsigned int *addr, int x, int y, int x1, int y1,unsigned int color)
{
draw_line(addr, x, y, x1, y, color);//-
draw_line(addr, x1, y, x1, y1, color);//|
draw_line(addr, x, y1, x1, y1, color);
draw_line(addr, x, y, x, y1, color);
}
最后来实现图片的绘制
void draw_bmp(unsigned int *addr, int x, int y, const char *bmpname)
{
//1. 打开图片
int fd = open(bmpname, O_RDONLY);
if(-1 == fd)
{
perror("open bmp");
return;
}
//2. 跳过54字节bmp头
lseek(fd, 54, SEEK_SET);
//3. 提取图像像素信息
unsigned int buf[600]