新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种嵌入式linux系统GUI的实现

一种嵌入式linux系统GUI的实现

作者:时间:2010-05-10来源:网络收藏

0 引言

本文引用地址:http://www.eepw.com.cn/article/151870.htm

操作的快速发展,迫切需求一种简洁的人机交互界面,为此,本文介绍了如何在FrameBuffer基础上设计自己的的简单方法。

1 显示原理

1.1 颜色表示

颜色是所有绘图操作的基础。16位的LCD屏一般需要2个字节来表示。16位RGB格式一般可分为RGB565与RGB5551两种格式。其中RGB565格式如表1所列,而其RGB5551格式如表2所列。表中的R为红色分量,G为绿色分量,B为蓝色分量。

由于颜色采用的是RGB565规则。因此。基本颜色,即红色、绿色、蓝色按照RGB565规则可分别为0xf800、0x07e0、Ox001f。由此可见,如果用十六进制直接表示颜色会非常不便。目前,普遍为软件工程师所接受的颜色表示方式为24位的RGB,其中R、G、B三个分量各占用一个字节,范围是0~255。因此,应该为MIS软件提供一个从24位RGB转化为16RGB的接口。该接口用宏来的具体方式如下:

#define RGB(r,g,b) (((r>>3)11)O((g>>2)5)O(b>>3))

1.2 画点操作

图形设备接口的最基本操作为画点,任何其它绘图函数都是基于画点来完成的。其原理是以屏的左上角第一个像素点为(0,0)点,向右为x轴,向下为y轴建立坐标系,只要提供某点的横坐标x,纵坐标y和颜色值,就可以通过一定的算法找到(x,y)所表示的地址,然后将该地址上的2个字节替换为指定的颜色值。例如有一块640×480×16的LCD,像素的首地址为0x40000000,那么,其中的第2行、第3列的像素位置如图1所示。

如果要把第2行、第3列的像素由原来的白色(0xfff)变为黑色(0x0000)。那么,就可以根据下面的寻址方式找到地址:

最终地址=首地址+y×2×屏的宽度+x×2

其中,首地址表示第1行第1列像素所对应的地址。由上式,该点的地址=0x40000000+2×2×0x280+3×2=0x40000A06。那么0x40000A06地址对应的数据应为十六位颜色的低字节部分,而0x40000A07地址对应的数据应为十六位颜色的高字节部分。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭