/*
*功能:让一个圆在屏幕上移动
*/
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main(void)
{
int fb_fd;
int x, y;
unsigned int color[480][800];
fb_fd = open("/dev/fb0", O_RDWR);//读写的方式打开显存文件
if(fb_fd == -1)
{
perror("打开显存文件失败");
return -1;
}
int cc_x=400,cc_y=240;//圆心坐标
int speed_x=2, speed_y=2;//圆的速度
while(1)
{
if(cc_x+50>=800 || cc_x-50<0)//边界检测
speed_x = -speed_x;//反方向移动
if(cc_y+50>=480 || cc_y-50<0)//边界检测
speed_y = -speed_y;//反方向移动
cc_x += speed_x;//圆的移动
cc_y += speed_y;//圆的移动
for(y=0; y<480; y++)
{
for(x=0; x<800; x++)
{
if((x-cc_x)*(x-cc_x)+(y-cc_y)*(y-cc_y) <= 50*50)//判断是否在圆内
color[y][x] = 0x0000ff00;//在圆内的颜色为绿色
else
color[y][x] = 0x00ffffff;//在圆外的颜色为白色
}
}
write(fb_fd, color, 4*800*480);//将颜色数据写入显存文件
lseek(fb_fd, 0, SEEK_SET);//刷新显存文件
}
close(fb_fd);//关闭显存文件
return 0;
}