欢迎关注VxWorks567
typedef struct ugl_bmap_header{UGL_UINT16 type;UGL_UINT16 width;UGL_UINT16 height;UGL_UINT16 maxWidth;UGL_UINT16 maxHeight;void *extension;UGL_BMAP_HEADER;typedef UGL_BMAP_HEADER UGL_DDB;typedef UGL_BMAP_HEADER UGL_MDDB;typedef UGL_BMAP_HEADER UGL_TDDB;typedef UGL_DDB *UGL_DDB_ID;typedef UGL_MDDB *UGL_MDDB_ID;typedef UGL_TDDB *UGL_TDDB_ID;Monochrome bitmaps */typedef struct ugl_mdib{UGL_SIZE width;UGL_SIZE height;UGL_SIZE stride;UGL_UINT8 *pImage;UGL_MDIB;UGL_MDDB_ID uglMonoBitmapCreate(UGL_DEVICE_ID devId,UGL_MDIB *mDib,UGL_DIB_CREATE_MODE createMode,UGL_UINT32 initValue,UGL_DEVICE_MEM_POOL_ID poolId);UGL_STATUS uglMonoBitmapDestroy(UGL_DEVICE_ID devId,UGL_MDDB_ID mDdbId);UGL_STATUS uglMonoBitmapRead(UGL_GC_ID gc,UGL_MDDB_ID mDdbId,UGL_POS srcLeft,UGL_POS srcTop,UGL_POS srcRight,UGL_POS srcBottom,UGL_MDIB *pMdib,UGL_POS dstX,UGL_POS dstY);UGL_STATUS uglMonoBitmapWrite(UGL_GC_ID gc,UGL_MDIB *pMdib,UGL_POS srcLeft,UGL_POS srcTop,UGL_POS srcRight,UGL_POS srcBottom,UGL_MDDB_ID mDdbId,UGL_POS dstX,UGL_POS dstY);UGL_STATUS uglBitmapBlt(UGL_GC_ID gc,UGL_BITMAP_ID srcBitmapId,UGL_POS srcLeft,UGL_POS srcTop,UGL_POS srcRight,UGL_POS srcBottom,UGL_DDB_ID dstBitmapId,UGL_POS dstX,UGL_POS dstY);UGL_STATUS uglBitmapStretchBlt(UGL_GC_ID gc,UGL_BITMAP_ID srcBitmapId,UGL_POS srcLeft,UGL_POS srcTop,UGL_POS srcRight,UGL_POS srcBottom,UGL_DDB_ID dstBitmapId,UGL_POS dstLeft,UGL_POS dstTop,UGL_POS dstRight,UGL_POS dstBottom);UGL_STATUS uglFillPatternSet(UGL_GC_ID gc,UGL_MDDB_ID patternBitmap);UGL_STATUS uglFillPatternGet(UGL_GC_ID gc,UGL_MDDB_ID *patternBitmap);
完整代码如下
/* Copyright 2020 VxWorks567 *//* 位图尺寸 *//* 位图数据 */static UINT8 mdibData[WIDTH*HIGHT/8] ={0xFF, 0xFF,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0xFF, 0xFF,0x01, 0x00,0x01, 0x00,0x01, 0x00,0x01, 0x00,0x01, 0x00,0x01, 0x00,0x01, 0x00};void uglTest(){UGL_REG_DATA *pRegData;UGL_GC_ID gc;UGL_DEVICE_ID devId;UGL_MDIB myMdib;UGL_MDDB_ID myMddbId;/* 初始化WindML */uglDisplayOpen(NULL, NULL, NULL);pRegData = uglRegistryFind(UGL_DISPLAY_TYPE, NULL, NULL, NULL);devId = (UGL_DEVICE_ID)pRegData->id;gc = uglGcCreate(devId);/* 初始化MDIB */myMdib.width = WIDTH;myMdib.stride = WIDTH;myMdib.height = HIGHT;myMdib.pImage = mdibData;/* 将MDIB转换为单色DDB */myMddbId = uglMonoBitmapCreate(devId, &myMdib, UGL_DIB_INIT_DATA, 0, UGL_NULL);/* 设置位图颜色 */uglForegroundColorSet(gc, 0xff0000);uglBackgroundColorSet(gc, 0x00ff00);/* 图形1 *//* 将单色DDB搬移到屏幕的(150,100) */uglBitmapBlt(gc, myMddbId, 0, 0, WIDTH-1, HIGHT-1,UGL_DISPLAY_ID, 150, 100);/* 图形2 *//* 将单色DDB拉伸到屏幕的(200,100)(300,200) */uglBitmapStretchBlt(gc, myMddbId, 0, 0, WIDTH-1, HIGHT-1,UGL_DISPLAY_ID, 200, 100, 300, 200);/* 设置封闭图形的填充图案 */uglFillPatternSet(gc, myMddbId);/* 图形3 */uglEllipse(gc, 400, 100, 500, 200, 0, 0, 0, 0);/* 图形4 */uglRectangle(gc, 550, 100, 700, 200);/* 退出图形 */uglMonoBitmapDestroy(devId, myMddbId);uglGcDestroy (gc);uglDisplayClose(NULL);return;}
执行效果如下

我是泰山 专注Vx 0x10年
本文分享自微信公众号 - 这里只有VxWorks(VxWorks567)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4470120/blog/4661918