直接贴上处理部分代码。
12864 思路。 建立缓存, 每次显示整屏刷写, 操作缓存。
代码如下
#define array(array_name,x,y) array_name[x][y]
uint8_t CogLCDBuf[CogLCDMAXPAGE][CogLCDMAXCOLUMN];//缓存
void DisPlay_Picture(uint8_t str,uint8_t x,uint8_t y,uint8_t wight,uint8_t high)
{
uint8_t Cache,HighByte;
uint8_t Page,OverLong;
uint8_t PageNum,CountPage,CountXcolumn;
Page=y/8; //star in ? page
OverLong=y%8;// over data size
PageNum=high/8; //字模站几页
if(high%8)
PageNum++;
#define array_name LCD_48X48_4CODE //定义缓存的字模
for(CountPage=0;CountPage<PageNum;CountPage++)
{
for(CountXcolumn=0;CountXcolumn<wight;CountXcolumn++)
{
Cache=CogLCDBuf[Page][x+CountXcolumn];
HighByte=array(array_name,CountPage,CountXcolumn)<<OverLong;//LCD_48X48_CODE[CountPage][CountXcolumn]<<OverLong;
CogLCDBuf[Page][x+CountXcolumn]=Cache|HighByte;
}
Page++;
for(CountXcolumn=0;CountXcolumn<wight;CountXcolumn++)
{
Cache=CogLCDBuf[Page][x+CountXcolumn];
HighByte=array(array_name,CountPage,CountXcolumn)>>(8-OverLong);
CogLCDBuf[Page][x+CountXcolumn]=Cache|HighByte;
}
}
CogLCDRedraw(); //刷屏
}
实现任意坐标显示任意大小的图标文字。 这是现实一个,多个大家都会,就不发了。
想弄的完善点, 所以发上来,希望大家多多指教!
目前无任何bug |