野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21734|回复: 10

[emWin] GUI显示PNG图片

[复制链接]
发表于 2021-7-21 15:16:11 | 显示全部楼层 |阅读模式
板子型号:STM32F103-指南者问题:PNG图片不能显示(照片数据装载在SD卡内)
描述:添加对应emwin版本的PNG解码库后,调用PNG图片显示函数不能够正常显示,在 “GUI_X_Delay” 这个函数里面一直循环(下方附图),但是通过全局搜索又没有其它地方调用这个函数。还请遇到过同样情况的大神帮忙解答一下!十分感谢!
补充:有通过将BMP类型图片装载进SD卡内,通过调用BMP显示函数正常显示。由于工程文件较大,就上传了PNG绘制和Maintask和main这几个函数以及“GUI_X_Delay”函数的附图
函数.PNG

主要函数.rar

3.07 KB, 下载次数: 13

回复

使用道具 举报

发表于 2021-7-22 11:11:26 | 显示全部楼层
串口助手有没有打印什么提示信息,看下是不是读取文件失败之类的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-23 13:35:45 | 显示全部楼层
ZZZ_XXJ 发表于 2021-7-22 11:11
串口助手有没有打印什么提示信息,看下是不是读取文件失败之类的

串口那边给了个返回值(1),似乎就是读取不成功的意思。但是问题就出在我从未调用 “GUI_X_Delay” 这个函数,但是却卡死在了这个函数里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-23 13:44:20 | 显示全部楼层
ZZZ_XXJ 发表于 2021-7-22 11:11
串口助手有没有打印什么提示信息,看下是不是读取文件失败之类的

我这个工程是直接复制官方给的源码做的,自己添加的png库,png库也是野火例程里配套的,按道理讲不应该会有读取文件出错之类的。如果官方给的是正确的,那问题就只能在回调函数和绘画png图时给的参数出了问题,其它地方不应该出问题才对。而且后期又下载了 挑战者 那块板子的配套代码,移植的是 挑战者 这块板子的回调函数,以及绘画png图这个函数,也是卡死在相同的地方。
回复 支持 反对

使用道具 举报

发表于 2021-7-24 09:10:48 | 显示全部楼层
MaSk 发表于 2021-7-23 13:44
我这个工程是直接复制官方给的源码做的,自己添加的png库,png库也是野火例程里配套的,按道理讲不应该会 ...

没记错的话,指南者好像没有外扩sram,芯片内部ram应该不够用来显示png的,png解码会有固定21kb的ram消耗
野火论坛202107240910419549..png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 18:52:13 | 显示全部楼层
ZZZ_XXJ 发表于 2021-7-24 09:10
没记错的话,指南者好像没有外扩sram,芯片内部ram应该不够用来显示png的,png解码会有固定21kb的ram消耗 ...

就是这个原因,一时大意了谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-24 18:58:36 | 显示全部楼层
本帖最后由 MaSk 于 2021-7-24 19:02 编辑
ZZZ_XXJ 发表于 2021-7-24 09:10
没记错的话,指南者好像没有外扩sram,芯片内部ram应该不够用来显示png的,png解码会有固定21kb的ram消耗 ...

还想问个问题,怎么为窗口的按键添加点击属性?基于桌面窗口做了一些功能图标,其中一个图标是计算器功能。计算器窗口界面设置成了“模态”窗口,现在想点击关闭按钮后返回桌面窗口,并且还能够继续进入别的模式实现别的功能。现在遇到的问题是点击关闭按钮后,桌面窗口的图标就点击不了。感觉问题是出在“模态”窗口那个地方,有没有什么办法能够在点击关闭按钮的时候向桌面窗口发送关闭“模态”窗口这条消息。
回复 支持 反对

使用道具 举报

发表于 2021-7-26 10:33:59 | 显示全部楼层
本帖最后由 ZZZ_XXJ 于 2021-7-26 10:37 编辑
MaSk 发表于 2021-7-24 18:58
还想问个问题,怎么为窗口的按键添加点击属性?基于桌面窗口做了一些功能图标,其中一个图标是计算器功能 ...

设置模态窗口用的是什么函数,如果是WM_MakeModal,可以传入0取消当前窗口的模态状态
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-26 10:44:03 | 显示全部楼层
ZZZ_XXJ 发表于 2021-7-26 10:33
设置模态窗口用的是什么函数,如果是WM_MakeModal,可以传入0取消当前窗口的模态状态 ...

对的,就是用了该函数设置的模态窗口。但是我点击关闭按钮那个控件之后就相当于把计算器的那个窗口删除掉了,所以我想给关闭按钮添加一个点击属性,在点击关闭按钮的时候将计算器窗口关闭的同时关闭“模态”窗口这一功能。
回复 支持 反对

使用道具 举报

发表于 2021-7-26 10:54:39 | 显示全部楼层
MaSk 发表于 2021-7-26 10:44
对的,就是用了该函数设置的模态窗口。但是我点击关闭按钮那个控件之后就相当于把计算器的那个窗口删除掉 ...

其实WM_MakeModal只会设置传入句柄所在的窗口为模态,不会影响到其他窗口的,想要试一下的话,在计算器窗口的父窗口回调里添加WM_DELETE消息,在消息里面取消计算器窗口的模态
桌面窗口点不了有可能是其他地方的问题,比如窗口关闭导致程序卡死之类的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-26 13:32:48 | 显示全部楼层
ZZZ_XXJ 发表于 2021-7-26 10:54
其实WM_MakeModal只会设置传入句柄所在的窗口为模态,不会影响到其他窗口的,想要试一下的话,在计算器窗 ...

刚刚用你的方法调试了一下,发现在点击关闭按钮之后,程序就卡死在了 HardFault_Handler 这个函数里,导致主界面也操作不了。但是关闭按钮的定义是:关闭 创建关闭按钮的窗口及其该窗口的所有子窗口,孙窗口。点击关闭按钮出现程序死在HardFault_Handler函数里面的原因可能是什么呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 14:54 , Processed in 0.040998 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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