WindRiver WindML 5.3显示图片程序

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

WindRiver WindML 5.3

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

WindRiver WindML 5.3

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

#include <stdio.h>
#include <ugl/ugl.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,然后贴到屏幕上,看效果

WindRiver WindML 5.3

WindRiver WindML 5.3

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