OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7077|回复: 6

LCD 填充颜色块问题

[复制链接]

20

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-6-10
在线时间
0 小时
发表于 2015-4-7 23:11:00 | 显示全部楼层 |阅读模式
5金钱
有个函数  LCD_Color_Fill。。在指定区域内填充指定颜色块。 为什么 只能填充 正方形的区域比如 200×200 的  如果填充 长方形区域 200×300 的话  就无法正常显示出来了。





问题 已经解决:


代码中的  color[i*width+j]    不知道为什么我写成   color[i*height+j] 了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-6-10
在线时间
0 小时
 楼主| 发表于 2015-4-7 23:20:18 | 显示全部楼层
我是 用 读点 函数  先读出  200×200 区域内的点数据 , 然后用  LCD_Color_Fill 显示 , 显示都正常 。, 可是我开始读200×300区域的点数据。,然后用LCD_Color_Fill 显示出来 200×300 的块 就图像乱了,一点都不正常。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-7 23:50:45 | 显示全部楼层
这函数没问题啊,你看看是不是用法有误。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-6-10
在线时间
0 小时
 楼主| 发表于 2015-4-8 02:49:17 | 显示全部楼层
[mw_shl_code=c,true]//在指定区域内填充指定颜色块 //(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为ex-sx+1)*(ey-sy+1) //color:要填充的颜色 void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color) { u16 height,width; u16 i,j; width=ex-sx+1; //得到填充的宽度 height=ey-sy+1; //高度 for(i=0;i<height;i++) { LCD_SetCursor(sx,sy+i); //设置光标位置 LCD_WriteRAM_Prepare(); //开始写入GRAM for(j=0;j<width;j++)LCD->LCD_RAM=color[i*height+j];//写入数据 } } [/mw_shl_code]
[mw_shl_code=c,true]//读取个某点的颜色值 //x,y:坐标 //返回值:此点的颜色 u16 LCD_ReadPoint(u16 x,u16 y) { u16 t=0; LCD_SetCursor(x,y); while(t<0X1FFF) { if(LCD->LCD_REG&0x0001)break; t++; } return LCD->LCD_RAM; }[/mw_shl_code]
读取 200*300 区域的点数据。
[mw_shl_code=c,true] for(y=0;y<300;y++) { for(x=0;x<200;x++) { rg=LCD_ReadPoint(lcddev.width/2-150+x,lcddev.height/2-100+y); i++; } }[/mw_shl_code]
显示 读取的 数据 :     读取和显示200×200 的数据都正常。也试过 100×200 的也是不行。
 注:  rg 是个很大的数组  可以完全存的下 300×300 的数据/『内存大任性』
[mw_shl_code=c,true]LCD_Color_Fill(lcddev.width/2-150,lcddev.height/2-100,lcddev.width/2-150+299,lcddev.height/2-100+199,rg);[/mw_shl_code]


回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-8 23:24:26 | 显示全部楼层
回复【4楼】幽灵骑士:
---------------------------------
i*height+j,这里有可能溢出,你改为u32的类型,试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-3-15
在线时间
4 小时
发表于 2015-5-1 16:14:15 | 显示全部楼层
搞不懂这个函数的执行过程,谁能帮解释一下呢!!谢谢!!
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2017-4-7
在线时间
33 小时
发表于 2017-11-21 04:44:29 | 显示全部楼层
正点原子 发表于 2015-4-8 23:24
回复【4楼】幽灵骑士:
---------------------------------
i*height+j,这里有可能溢出,你改为u32的类型, ...

原子哥,是u16的类型溢出了,不过有点不明白,我试了填充几个颜色显示是花的,请问这个函数用途和执行过程。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 19:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表