OpenEdv-开源电子网

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

对于GUI中有个函数用法不太明白

[复制链接]

23

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2012-10-24
在线时间
0 小时
发表于 2012-12-6 15:32:45 | 显示全部楼层 |阅读模式
在GUI存储设备的篇章中,有个函数  GUI_MEMDEV_Create(int x0,int y0,int XSize,int YSize);
    其中  x0,y0  是存储设备的 X,Y轴坐标    XSize和YSize  是存储设备X,Y轴尺寸  
       请问一下,这4个参数具体怎么理解的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2012-10-25
在线时间
0 小时
发表于 2012-12-6 15:42:14 | 显示全部楼层
和建立视窗的四个坐标函数一样,XY坐标(原点),X尺寸(宽),Y尺寸(长),就能建立一个矩形。
程序员是未来的魔法师!
回复 支持 反对

使用道具 举报

23

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2012-10-24
在线时间
0 小时
 楼主| 发表于 2012-12-6 16:30:39 | 显示全部楼层
回复【2楼】super_Tao:
---------------------------------
视窗还没看,刚学GUI的,  x0 y0  是原点容易理解,  那X,Y尺寸  是怎么建立矩形的呢?
   x0---YSize     y0----YSize  这么建立的吗?
      例如    x0=10     y0=10    XSize=100     YSize=100 
             那么就建立了一个从点(10,10)到   点(100+10,100+10) 这么建立矩形的吗?


    我看例程上面说这类函数可以消除闪烁的。我自己写了个程序如下:

        hMem = GUI_MEMDEV_Create(60,60,100,100);
GUI_MEMDEV_Select(hMem);
GUI_Clear();
Delay_ms(1000);
GUI_SetDrawMode(GUI_DRAWMODE_NORMAL);
GUI_SetColor(GUI_RED);
GUI_FillCircle(60,60,10);
GUI_MEMDEV_CopyToLCD(hMem); 

        这个程序就是进入存储设备,然后清屏,再延时1秒,之后再显示红色的圆,再通过设备把数据传到屏上的吗? 怎么我能很明显的看到清屏效果 延时效果 和画圆的效果呢?不是一步骤就全部显示出来了吗?咋也是分步骤显示的?那不就和没使用这个存储设备功能一样的了? 
回复 支持 反对

使用道具 举报

45

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2012-11-26
在线时间
0 小时
发表于 2012-12-6 16:46:28 | 显示全部楼层
回复【3楼】颓废ю小寶:
---------------------------------
储存设备设置了没?
回复 支持 反对

使用道具 举报

23

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2012-10-24
在线时间
0 小时
 楼主| 发表于 2012-12-6 17:23:03 | 显示全部楼层
回复【4楼】859724644:
---------------------------------
#define GUI_SUPPORT_MEMDEV        1  /* Memory devices available */
 我已经设置1了,这个函数应该怎么用啊?我感觉用它和不用它一样啊,没什么特别的
    我弄了个测试程序,水平移动位图的,可以看到明显的刷屏。并不是一下就出现的
     其中  q0就是控制水平方向移动的,可以发现不是一下就出现了,而是有刷屏效果出现
     while(1)
{
hMem = GUI_MEMDEV_Create(0,0,240,320);
GUI_MEMDEV_Select(hMem);
q0++;
GUI_DrawBitmap(&bm444,q0,10);

GUI_MEMDEV_CopyToLCDAA(hMem);

}

  如果把上面程序里面在 q0++后面加入一个清屏语句,那刷屏效果就忒明显的。根本就没有看出存储设备的功能啊.
          求教一下这个函数应该怎么用啊?

回复 支持 反对

使用道具 举报

51

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2012-10-25
在线时间
0 小时
发表于 2012-12-7 08:05:42 | 显示全部楼层
回复【3楼】颓废ю小寶:
---------------------------------
你说对了
程序员是未来的魔法师!
回复 支持 反对

使用道具 举报

45

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2012-11-26
在线时间
0 小时
发表于 2012-12-7 08:08:46 | 显示全部楼层
回复【5楼】颓废ю小寶:
---------------------------------
你没感觉不对劲么?改个1就利用存储设备了?用了哪个呢?你知道不?知道问题存在了吧~
回复 支持 反对

使用道具 举报

51

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2012-10-25
在线时间
0 小时
发表于 2012-12-7 08:09:55 | 显示全部楼层
存储设备是:
显示一个窗口步骤如下,创建一个窗口,设置颜色,显示一个文本。
不用存储设备是时时显示的,用存储设备是设置完毕后显示的(所以就不闪了)。
程序员是未来的魔法师!
回复 支持 反对

使用道具 举报

23

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2012-10-24
在线时间
0 小时
 楼主| 发表于 2012-12-7 08:46:57 | 显示全部楼层
回复【8楼】super_Tao:
---------------------------------
存储设备是设置完毕后显示的,是用这个函数显示到TFT屏上的啊  GUI_MEMDEV_CopyToLCDAA(hMem); 
   也就是说在程序运行到 这个函数之前 屏幕应该不会显示我所绘制的图形、图片或者文字的啊。
      可是我在显示2个图形之间加入一个延时的话,程序卡在延时的时候已经把第一个图形显示出来了,效果就是和没用存储设备的效果一样(换句话说,就是存储设备没起作用一样了)

           如果你比较明白的话,能够给我详细的讲解一下吗?
回复 支持 反对

使用道具 举报

23

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2012-10-24
在线时间
0 小时
 楼主| 发表于 2012-12-7 08:53:55 | 显示全部楼层
回复【7楼】859724644:
---------------------------------
这个所谓的存储设备不是指的SD卡,FLASH这些
回复 支持 反对

使用道具 举报

51

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2012-10-25
在线时间
0 小时
发表于 2012-12-7 08:57:20 | 显示全部楼层
回复【10楼】颓废ю小寶:
---------------------------------
你看一下Confing文件夹下的GUIConf有一个#define GUI_ALLOC_SIZE它的值就是给存储设备分配的空间。你还是看看存储设备章的手册吧。
程序员是未来的魔法师!
回复 支持 反对

使用道具 举报

51

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2012-10-25
在线时间
0 小时
发表于 2012-12-7 08:59:43 | 显示全部楼层
回复【9楼】颓废ю小寶:
---------------------------------
 GUI_MEMDEV_CopyToLCDAA是以反锯齿方式显示
程序员是未来的魔法师!
回复 支持 反对

使用道具 举报

45

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2012-11-26
在线时间
0 小时
发表于 2012-12-7 10:54:14 | 显示全部楼层
回复【10楼】颓废ю小寶:
---------------------------------
你认为SD卡,FLASH能加速嘛?先写进去再读出来,那岂不是还要慢?使用快速存储芯片。用存储芯片的意思的是把这些绘图的过程在芯片里完成再显示,看不出画图痕迹。但STM32这种慢的MCU,没必要用存储芯片,多了一步存储过程岂不是更慢?
回复 支持 反对

使用道具 举报

14

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2016-5-16
在线时间
67 小时
发表于 2016-10-14 22:24:10 | 显示全部楼层
颓废ю小寶 发表于 2012-12-6 17:23
回复【4楼】859724644:
---------------------------------
#define GUI_SUPPORT_MEMDEV &nb ...

我现在也碰到这中刷新很慢的问题,应该是底层驱动没有优化好,外部SRAM要复制到LCD的数据太大,很耗时间,可以加入DMA功能(我加不成功,因为不知道怎么确定创建的存储设备的地址)
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 01:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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