前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UGL之图片显示

UGL之图片显示

作者头像
Taishan3721
发布2021-10-08 10:47:14
2.6K0
发布2021-10-08 10:47:14
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

欢迎关注VxWorks567

WindML5.3里默认已经支持JPG和PNG的图片格式了

包含这两个option后,App里就可以直接打开相应的图片文件 - uglImageReadFile()

这个函数可以把输入的文件转换为DIB,然后就可以随意使用这个位图了。或者直接转换为DBD,更便于显示。闲言少续,上代码

代码语言:javascript
复制

#include <ugl/ugl.h>
#include <ugl/image/uglImage.h>

void testUglImage(char *name, UINT32 x, UINT32 y)
{
    UGL_REG_DATA *pRegData;
    UGL_GC_ID     gc;
    UGL_DDB_ID    myDdbId;
    UGL_IMAGE    *pImage;

    if(NULL == name)
        return;

    uglDisplayOpen(NULL, NULL, NULL); 
    pRegData = uglRegistryFind(UGL_DISPLAY_TYPE, NULL, NULL, NULL);
    gc = uglGcCreate((UGL_DEVICE_ID)pRegData->id);

    pImage = uglImageReadFile(name, IMAGE_OBJECT_DDB, UGL_NULL, 
                             (UGL_DEVICE_ID)pRegData->id, UGL_NULL);
    if(UGL_NULL != pImage)
        {
        myDdbId = (UGL_DDB_ID)(pImage->pObject);
        if(UGL_NULL != myDdbId)
            {
            uglBitmapBlt(gc, myDdbId,
                         0, 0, myDdbId->width-1, myDdbId->height-1,
                         UGL_DISPLAY_ID, x, y);
            uglImageFree(pImage);
            } 
        }
       
#if 0
    /* 退出图形 */
    uglGcDestroy(gc);
    uglDisplayClose(NULL);
#endif
    return;
    }

这段代码的作用就是把文件转换为DBD,然后贴到屏幕上,看效果

有些低版本WindML,还不支持PNG,那可以把高版本的这个libpng移植过去,毕竟WindRiver用的就是开源的

如果还想支持其它格式,就得根据相应的文件格式,自己去封装一个解析函数了,例如最基本的bmp,就有32位真彩色、24位、256色、16色、黑白等多种模式

公众号VxWorks567封装了BMP的函数,支持各种颜色模式

还有一种比较特殊的图片格式:gif - 每个gif文件里,可以包含多个位图

把gif里所有位图都读取之后,按照一定的时间间隔来显示,视觉上就是动画了

既然是自己读取的位图,时间间隔也是自己说了算:那来个两倍速

我是泰山 专注VX好多年!

钻研技术 其乐无穷!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档