硬汉嵌入式论坛

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

[emWin] 如何将ICONVIEW的图片从25Q16中的读取

[复制链接]

4

主题

13

回帖

25

积分

新手上路

积分
25
发表于 2020-8-26 10:35:39 | 显示全部楼层 |阅读模式
新手入门emwin,想把ICONVIEW图标图片通过BMPCVT工具转为流位图后,存入25Q16;接下来如何实现ICONVIEW数据的打通?在网上找了下都是SD开中文件系统加载方式,有没有大侠实现过直接从25QXX中直接加载?(新手,还没有学会文件系统这一部分)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115797
QQ
发表于 2020-8-26 11:26:56 | 显示全部楼层
不需要文件系统,直接整体加载到SRAM或者SDRAM使用即可。
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-8-26 14:44:01 | 显示全部楼层
首先,感谢汉兄。1.我将生成的流位图数据下载到25Q16,用 ICONVIEW_AddStreamedBitmapItem(hItem,&icon_buf[1],"cjyu"); 显示为空白(无图标,有底下的提示文字)
2.后来翻书,找到绘制流位图那章,用GUI_DrawStreamedBitmapAuto(&_acapp06_481[0],100,0); 有图片显示(说明流位图的数据是正确的)
3.为什么采用ICONVIEW控件的addStreamedBitmap就不行??

单独流位图显示图片正常,用流位图显示ICONVIEW图标不行

单独流位图显示图片正常,用流位图显示ICONVIEW图标不行
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115797
QQ
发表于 2020-8-26 15:05:50 | 显示全部楼层
cjy2001@163.com 发表于 2020-8-26 14:44
首先,感谢汉兄。1.我将生成的流位图数据下载到25Q16,用 ICONVIEW_AddStreamedBitmapItem(hItem,&icon_buf ...

要使用ICONVIEW使用流位图。
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-8-26 15:38:07 | 显示全部楼层
原来还有这么一个“开关”,API手册不熟悉。。
加入下面这句就OK了,谢谢!
ICONVIEW_EnableStreamAuto();
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
发表于 2020-8-26 16:42:36 | 显示全部楼层
我自己使用SPI FLASH 无文件系统 主要使用
GUI_CreateBitmapFromStream();
ICONVIEW_AddBitmapItem();
这两个API
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-8-26 16:57:38 | 显示全部楼层
我又来啦!!
1.使用全局变量定义一个buf[4700]  (48*48的图标),能正常显示;开心。。。

同时又觉得开这么大的全局太浪费,考虑动态内存方式。结果用了如下2种方法都是显示空白图标,大家有没有好的解决方法?
(1)使用malloc方法,代码如下,显示空白(伤心。。。)

        p = malloc(5000);
       
        W25Q16_Read(p,0x01a000,5000-1);
       
        ICONVIEW_EnableStreamAuto();
        ICONVIEW_AddStreamedBitmapItem(hItem,p,"cjyu");
       
        free(p);

(2)使用GUI自带的动态内存,也是显示空白(伤心。。。),大家有没有好的解决方法?

        hMem = GUI_ALLOC_AllocZero(5000);
        p = GUI_ALLOC_h2p(hMem);
        W25Q16_Read(p,0x01a000,5000-1);
        ICONVIEW_EnableStreamAuto();
        ICONVIEW_AddStreamedBitmapItem(hItem,p,"cjyu");
        GUI_ALLOC_Free(hMem);

回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-8-26 16:58:24 | 显示全部楼层
spider 发表于 2020-8-26 16:42
我自己使用SPI FLASH 无文件系统 主要使用
GUI_CreateBitmapFromStream();
ICONVIEW_AddBitmapItem();

有没有使用动态内存加载图标数据?如何解决。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115797
QQ
发表于 2020-8-27 00:29:49 | 显示全部楼层
cjy2001@163.com 发表于 2020-8-26 16:57
我又来啦!!
1.使用全局变量定义一个buf[4700]  (48*48的图标),能正常显示;开心。。。

从SPI Flash读取出来的和你的buf4700对比下
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
发表于 2020-8-27 09:48:11 | 显示全部楼层
cjy2001@163.com 发表于 2020-8-26 16:58
有没有使用动态内存加载图标数据?如何解决。。

我没试过 手册好像有一个 ICONVIEW_SetOwnerDraw()这个可以试试
成功了分享一下 互相学习哈哈哈
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-8-27 15:07:43 | 显示全部楼层
eric2013 发表于 2020-8-27 00:29
从SPI Flash读取出来的和你的buf4700对比下

两种数据我对比过(只看了前面部分,一样的)。
我现在怀疑的是,小工具在绘制的时候(不是马上绘制),P已经被free了,所以他找不到“北”了。不知道理解是否正确
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2020-8-27 15:08:17 | 显示全部楼层
spider 发表于 2020-8-27 09:48
我没试过 手册好像有一个 ICONVIEW_SetOwnerDraw()这个可以试试
成功了分享一下 互相学习哈哈哈

我用的是STemWin5.22版本,好像没有这个API。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 09:14 , Processed in 0.269527 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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