硬汉嵌入式论坛

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

[emWin] WM_PAINT 显示BIN2C.exe转换后的GIF动图

[复制链接]

3

主题

6

回帖

15

积分

新手上路

积分
15
发表于 前天 13:57 | 显示全部楼层 |阅读模式
请教,如何再窗口上显示一个gif动图,不是f_read读sd卡的那种(因为设备中没有sd卡)。
我尝试过用Bin2C.exe去转换成数组格式,然后用下面的函数去显示,但是没有任何显示

static const unsigned char _acpair[600715UL + 1]  = {。。。。省略。。。。}

GUI_GIF_GetInfo(_acpair, sizeof(_acpair), &GifInfo);
GUI_GIF_GetImageInfo(_acpair, sizeof(_acpair), &ImageInfo, i_gif);

所以请教该如何在WM_PAINT中描绘一个gif动图
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 昨天 10:13 | 显示全部楼层
static void _ShowMovie(const char* pFile, int FileSize) {
    GUI_GIF_IMAGE_INFO ImageInfo = { 0 }; // Info structure of one particular GIF image of the GIF file
    GUI_GIF_INFO       GifInfo = { 0 }; // Info structure of GIF file
    int                i;
    int                j;
    int                XPos;
    int                YPos;

    //
    // Display sample information
    //
    GUI_SetFont(&GUI_Font8x16);
    GUI_ClearRect(0, 40, 319, 59);
    GUI_DispStringHCenterAt("Show complete GIF file as movie", 160, 40);
    //
    // Show movie
    //
    GUI_ClearRect(0, 60, 320, 320);                                 // Clear the image area
    GUI_GIF_GetInfo(pFile, FileSize, &GifInfo);                     // Get GIF info structure
    XPos = (GifInfo.xSize > 320) ? 0 : 160 - (GifInfo.xSize / 2);
    YPos = (GifInfo.ySize > 180) ? 60 : 150 - (GifInfo.ySize / 2);
    for (i = 0; i < 2; i++) {                                       // Show the complete GIF 2 times ...
        for (j = 0; j < GifInfo.NumImages; j++) {
            GUI_GIF_DrawSub(pFile, FileSize, XPos, YPos, j);            // Draw sub image
            GUI_GIF_GetImageInfo(pFile, FileSize, &ImageInfo, j);       // Get sub image information
            GUI_Delay(ImageInfo.Delay ? ImageInfo.Delay * 10 : 100);    // Use the Delay member of the ImageInfo structure for waiting a while
        }
        GUI_Delay(200);                                              // Wait a while
    }




}


我尝试上面的函数可以将动图的C数组显示在背景界面,但是没办法绘制在窗口(因为WM_PAINT不能绘制阻塞类的函数,只能是显示文本,数字,图片之类的)。我尝试用定时器去定时切换帧,然后刷新 GUI_GIF_DrawSub,没有效果
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 昨天 12:17 | 显示全部楼层
参考下我这个,这里例子里面的图片浏览功能是在独立创建的窗口上实现的。

【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-21)
https://www.armbbs.cn/forum.php? ... 7330&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 昨天 18:06 | 显示全部楼层
eric2013 发表于 2025-4-24 12:17
参考下我这个,这里例子里面的图片浏览功能是在独立创建的窗口上实现的。

【安富莱】F429开发板RTOS+emW ...

你这个我昨天下载下来看了,你这个不是配合SD卡存储图片的吗?
在app_picBrowseDig.c文件中有存放路径
static const char s_MusicPathDir[] = {"M0:\\pic\\"};  /* 存储器中图片存放的路径 */

我想将gif转成C数组的方式,然后绘制在窗口上。我的硬件上不支持sd卡存放gif动图
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 6 小时前 | 显示全部楼层
hsw1234 发表于 2025-4-24 18:06
你这个我昨天下载下来看了,你这个不是配合SD卡存储图片的吗?
在app_picBrowseDig.c文件中有存放路径
...

也可以参考,我的那个是直接加载到SDRAM了。

主要看GIF在窗口下绘制方法即可
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 17:43 , Processed in 0.273459 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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