OpenEdv-开源电子网

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

战舰V3开发板 STemwin 希望在Framewin中显示PNG图片,失败,显示黑色,死机,求大神指点!!!

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2018-3-5
在线时间
4 小时
发表于 2018-3-5 14:39:21 | 显示全部楼层 |阅读模式
5金钱

//Framewin 调用的对话框
static void _dialog1cbk(WM_MESSAGE * pMsg)
{
        WM_HWIN hWin,hWindow;
        int     NCode;
        char  BUF[20];
        hWin = pMsg->hWin;

        switch (pMsg->MsgId) {
        case WM_TIMER:
                hWin = pMsg->hWin;

                WM_RestartTimer(pMsg->Data.v,100);
  break;
        case WM_PAINT:
                displaypngex("0:/1.png",0,0,0);//显示PNG图片 失败  出现黑色  死机现象
                hWin = pMsg->hWin;
                break;
         case WM_INIT_DIALOG:
               
         break;
         case WM_NOTIFY_PARENT:

                 break;
         break;

        default:
    WM_DefaultProc(pMsg);
    break;
        }
}


//PNG显示(PNG库添加成功了,在不适用控件时可以显示PNG)

static int PngGetData(void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off)
{
        static int readaddress=0;
        FIL * phFile;
        U8 *pData;
        UINT NumBytesRead;
        #if SYSTEM_SUPPORT_UCOS
                OS_CPU_SR cpu_sr;
        #endif
       
        pData = (U8*)*ppData;
        phFile = (FIL *)p;
       

        if(Off == 1) readaddress = 0;
        else readaddress=Off;
       
        #if SYSTEM_SUPPORT_UCOS
                OS_ENTER_CRITICAL();       
        #endif
        f_lseek(phFile,readaddress);
       
        f_read(phFile,pData,NumBytesReq,&NumBytesRead);
       
               
        #if SYSTEM_SUPPORT_UCOS
                OS_EXIT_CRITICAL();       
        #endif
        return NumBytesRead;
}


int displaypngex(char *PNGFileName,u8 mode,u32 x,u32 y)
{
        char result;
        int XSize,YSize;

        result = f_open(&PNGFile,(const TCHAR*)PNGFileName,FA_READ);       
        if(result != FR_OK)        return 1;

                        GUI_PNG_DrawEx(PngGetData,&PNGFile,x,y);

        f_close(&PNGFile);       
        return 0;
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2018-3-5
在线时间
4 小时
 楼主| 发表于 2018-3-5 14:40:34 | 显示全部楼层
本帖最后由 dengXXX 于 2018-3-5 15:12 编辑

1.PNG库添加成功,因为main函数直接显示PNG是可以的,我测试过2.希望在Framewin或者Window中显示,通过回调函数里面的WM_PAINT就是显示不了,显示出黑色。
同样的位置,同样的方法显示BMP图片,就是可以的。

3.一开始PNG其实也有显示一部分的,好像后来被Framewin覆盖了

求大神指点!!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-3-6 01:00:40 | 显示全部楼层
帮顶
回复

使用道具 举报

6

主题

119

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-26
在线时间
139 小时
发表于 2018-3-6 10:58:43 | 显示全部楼层
dengXXX 发表于 2018-3-5 14:40
1.PNG库添加成功,因为main函数直接显示PNG是可以的,我测试过2.希望在Framewin或者Window中显示,通过回调 ...

这种显示方法不太好  还是建议加载在存储设备里面显示  显示效率会提高很多很多  另外png解码开销要远大于bmp  而且你这还是从外部存储器加载的  速度更慢  
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-3-9
在线时间
2 小时
发表于 2018-4-22 17:47:16 | 显示全部楼层
GUI_PNG_DrawEx(PngGetData,&PNGFile,x,y);  中调用PngGetData函数,怎么没有传递参数呢?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 08:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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