在ARM开发板的屏幕上画一个圆,并使圆动起来

        本人使用的是三星6818开发板 (ARM Cortex-A53架构),Linux系统。屏幕的大小是800*480。即有800*480个像素点。只要把属于球那部分的像素点与背景的像素点用不同的颜色区分开来就能显示出一个圆了。既然是要在屏幕上画圆,那首先就要打开屏幕的屏幕设备文件/dev/fb0。下一步就是把圆画出来。画一个圆需要确定圆的圆心坐标(X,Y)以及半径R。比如先把圆画在屏幕的中心位置(400,240)。然后根据圆的标准方程(x-a)²+(y-b)²=r²,把圆画出来。可以通过write函数和for循环,把球的颜色和背景颜色刷到屏幕上。但是,这样子效率会相对低一点。在Linux系统帧缓冲设备对应的设备文件为/dev/fb*。由于 Linux工作在保护模式,每个应用程序都有自己的虚拟地址空间,在应用程序中是不能直接访问物理缓冲区地址的。为此,Linux 在文件操作file_operations 结构中提供了mmap函数,可将文件的内容映射到用户空间。对于帧缓冲设备,则可通过映射操作,可将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址中,之后用户就可以通过读写这段虚拟地址访问屏幕缓冲区,在屏幕上绘图了把文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;

效果如下:

怎么样使圆动起来呢?只需要通过改变圆心的坐标就可以了。圆动起来以后,不能让它跑出屏幕,所以要设置一定的限制条件,使之在碰到屏幕的边缘的时候来回弹。比如通过设置标志位等等。

具体代码如下:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值