硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7185|回复: 14
收起左侧

[emWin] emwin流位图显示问题

[复制链接]

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2019-5-9 12:00:02 | 显示全部楼层 |阅读模式
emwin学习遇到以下问题
准备从SD卡读取.dta文件显示流位图
  1. while(1)
  2.         {       
  3.                 pic("app.dta");
  4.                 rt_thread_delay(1000);
  5.         }
复制代码
在while里面执行显示可以正常显示图片
但是
  1. break;
  2.                 case WM_PAINT:               
  3.                         GUI_DrawBitmap(&bmdate,0,72);
  4.                         draw_frame();
  5.                         pic("app.dta");               
  6.                 break;
复制代码
放到重绘函数里面的话显示不出来
还望大家帮忙解答一下
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2019-5-9 12:05:22 | 显示全部楼层
流位图做转换没,没有转换不能直接调用函数GUI_DrawBimap
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-9 13:26:04 | 显示全部楼层
eric2013 发表于 2019-5-9 12:05
流位图做转换没,没有转换不能直接调用函数GUI_DrawBimap

显示是在pic函数里完成,内容如下
  1. void pic(char *path)
  2. {
  3.         char *buf;
  4.         int fd;       
  5.         struct stat file_state;
  6.         GUI_LOGPALETTE plate;
  7.        
  8.         fd = open(path,O_RDONLY);
  9.         if(fd>=0)
  10.         {
  11.                 fstat(fd,&file_state);               
  12.                 hMem = GUI_ALLOC_AllocZero(512*1024);
  13.                 buf = GUI_ALLOC_h2p(hMem);               
  14.                 read(fd,buf,file_state.st_size);       
  15.                 close(fd);
  16.                 GUI_CreateBitmapFromStream(&bmp,&plate,buf);
  17.                 GUI_DrawBitmap(&bmp,300,100);
  18.                 GUI_ALLOC_Free(hMem);
  19.         }       
  20. }
复制代码

不知道这样对不对,还望指导一下
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-9 14:28:20 | 显示全部楼层
找到问题了,是我没有选择当前窗口,现在能显示出来,但是就是屏幕一闪一闪的太慢了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2019-5-9 14:39:53 | 显示全部楼层
怦然心动如往昔 发表于 2019-5-9 14:28
找到问题了,是我没有选择当前窗口,现在能显示出来,但是就是屏幕一闪一闪的太慢了

闪烁的话,记得开启窗口使用存储设备
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-9 15:33:17 | 显示全部楼层
eric2013 发表于 2019-5-9 14:39
闪烁的话,记得开启窗口使用存储设备

好的,我试试
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-9 16:23:35 | 显示全部楼层
eric2013 发表于 2019-5-9 14:39
闪烁的话,记得开启窗口使用存储设备

非常感谢,能够显示成功了。
还有一个问题,论坛注册邮箱一直收不到邮件,以后只能用微信登录了吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2019-5-9 17:34:31 | 显示全部楼层
怦然心动如往昔 发表于 2019-5-9 16:23
非常感谢,能够显示成功了。
还有一个问题,论坛注册邮箱一直收不到邮件,以后只能用微信登录了吗

微信吧,省事些。

论坛不知道怎么回事,经常出这种问题。
回复

使用道具 举报

9

主题

140

回帖

187

积分

初级会员

积分
187
QQ
发表于 2019-5-9 18:00:28 | 显示全部楼层
不建议在WM_PAINT下做读取文件显示又释放,因为WM_PAINT消息执行是很频烦的,只要界面有变化就会产生多次WM_PAINT消息,建议在使用这个窗口时读取图片到内存,删除这个窗口时再释放掉内存
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-9 22:28:25 | 显示全部楼层
allyzc 发表于 2019-5-9 18:00
不建议在WM_PAINT下做读取文件显示又释放,因为WM_PAINT消息执行是很频烦的,只要界面有变化就会产生多次WM ...

目前安装上面大哥的方法做了,创建了一个存储设备
  1. if(fd>=0)
  2.         {
  3.                 /*                读取文件        */
  4.                 fstat(fd,&file_state);               
  5.                 hMem = GUI_ALLOC_AllocZero(512*1024);
  6.                 buf = GUI_ALLOC_h2p(hMem);               
  7.                 read(fd,buf,file_state.st_size);       
  8.                 close(fd);
  9.                 Memdev = GUI_MEMDEV_Create(0,0,100,100);
  10.                 GUI_MEMDEV_Select(Memdev);
  11.                 GUI_DrawStreamedBitmapAuto(buf,0,0);
  12.                 GUI_MEMDEV_Select(0);
  13.                 GUI_ALLOC_Free(hMem);
  14.                 GUI_MEMDEV_WriteAt(Memdev,100,100);
  15.         }       
复制代码

顺便请教一个问题,创建存储设备时的X_SIZE,Y_SIZE由GUI_BMP_GetXSize()函数获取buf数据的X_SIZE,Y_SIZE可以用在流位图的数据吗?我今天直接使用好像没得到结果
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-10 09:56:48 | 显示全部楼层
问一下为什么把图片转化成.dta文件时,文件体积变大了。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2019-5-10 13:11:00 | 显示全部楼层
怦然心动如往昔 发表于 2019-5-10 09:56
问一下为什么把图片转化成.dta文件时,文件体积变大了。。

里面会存储一些格式信息。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2019-5-10 13:22:03 | 显示全部楼层
怦然心动如往昔 发表于 2019-5-9 22:28
目前安装上面大哥的方法做了,创建了一个存储设备
顺便请教一个问题,创建存储设备时的X_SIZE,Y_SIZE由G ...

流位图可以转成位图后获取参数信息。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2019-5-10 13:25:21 | 显示全部楼层
eric2013 发表于 2019-5-10 13:22
流位图可以转成位图后获取参数信息。

好的,谢谢。
回复

使用道具 举报

22

主题

114

回帖

180

积分

初级会员

积分
180
发表于 2020-12-31 14:53:33 | 显示全部楼层
怦然心动如往昔 发表于 2019-5-9 14:28
找到问题了,是我没有选择当前窗口,现在能显示出来,但是就是屏幕一闪一闪的太慢了

楼主怎么选择窗口啊
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-20 02:16 , Processed in 0.301588 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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