luckysugus 发表于 2012-7-26 15:46:58

请教在显示缓存中填充任意大小图片的算法!

我在单片机中定义了一块与点阵LCD一对一的显示缓存,我想将任意大小的图片数据填充到缓存数组的指定位置,函数接口如下:
Load_Pic(unsigned int x,unsigned int y,unsigned int length,unsigned width,unsigned char *data);
x:缓存的横坐标
y:缓存的纵坐标
length:图片的长度
width:图片的宽度
*data:指向图片数据
各位高手,有没有好的算法实现此功能?

Gorgon_Meducer 发表于 2012-7-26 18:41:34

说实话,这要看你的显存结构,比如你是单色还是彩色?

luckysugus 发表于 2012-7-27 15:04:50

就是普通的单色点阵屏

Gorgon_Meducer 发表于 2012-7-27 23:10:05

luckysugus 发表于 2012-7-27 15:04 static/image/common/back.gif
就是普通的单色点阵屏

1个字节表示的8个点是横排的还是竖排的?

meirenai 发表于 2012-7-28 12:57:48

顶顶 也想知道

Gorgon_Meducer 发表于 2012-7-29 23:33:11

Gorgon_Meducer 发表于 2012-7-27 23:10 static/image/common/back.gif
1个字节表示的8个点是横排的还是竖排的?

首先,要考虑你填充的图片中的点阵排列(横/竖)是否和LCD相同,通常应该是相同的。相同的情况下这么考虑(以横向排列为例):
1、如果x坐标是8的倍数,直接一行一行的copy就可以了
2、如果x坐标不是8的倍数,显然,做一个MOD8的位移(右移)就可以了——当然实际操作的时候要考虑受影响的显存的首个字节和最后一个字节,他们需要做一定的运算来保护原有的部分内容。在这两个字节之间的操作当然比较简单了。
----------------
从以上两点来考虑,你就知道怎么处理了。
页: [1]
查看完整版本: 请教在显示缓存中填充任意大小图片的算法!