博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MiniGUI - 位图
阅读量:4590 次
发布时间:2019-06-09

本文共 2825 字,大约阅读时间需要 9 分钟。

(1)位图文件的装载

int GUIAPI LoadBitmapFromFile (HDC hdc, PBITMAP pBitmap, const char* spFileName);
#define LoadBitmap LoadBitmapFromFile
void GUIAPI UnloadBitmap (PBITMAP pBitmap);
 
在从文件中装载位图时,MiniGUI 通过文件的后缀名判断位图文件的类型。MiniGUI 库中内建有对 Windows BMP 和 GIF 格式的支持,而对 JPEG 以及 PNG 等位图格式的支持,是通过 libjpeg 和 libpng 库实现的。
MiniGUI的图片格式包括:bmp/lbm/pcx/tga/gif/jpg/jpeg/png 
 
libminigui-gpl-3.0.12/src/include/readbmp.h
1 typedef struct _BITMAP_TYPE_INFO BITMAP_TYPE_INFO; 2  3 /* 4  * structure for Image operations 5  * The idea comes from readbmp.c in Allegro by Shawn Hargreaves. 6  */ 7 struct _BITMAP_TYPE_INFO 8 {   9     char ext[8];10     void* (*init)       (MG_RWops* fp, MYBITMAP *my_bmp, RGB *pal);11     int (*load)         (MG_RWops* fp, void* init_info, MYBITMAP *my_bmp,12                          CB_ONE_SCANLINE cb, void* context);13     void (*cleanup)     (void* init_info);14     int (*save)         (MG_RWops* fp, MYBITMAP *my_bmp, RGB *pal);15     BOOL (*check)       (MG_RWops* fp);16 };

 

libminigui-gpl-3.0.12/src/mybmp.c
1 #define MAX_BITMAP_TYPES   9 2  3 static BITMAP_TYPE_INFO bitmap_types[MAX_BITMAP_TYPES] = 4 { 5    { "bmp", __mg_init_bmp, __mg_load_bmp, __mg_cleanup_bmp, 6 #ifdef _MGMISC_SAVEBITMAP 7     __mg_save_bmp, __mg_check_bmp }, 8 #else 9     NULL, __mg_check_bmp },10 #endif11 12 #ifdef _MGIMAGE_LBM13    { "lbm", __mg_init_lbm, __mg_load_lbm, __mg_cleanup_lbm, NULL, __mg_check_lbm },14 #endif15 #ifdef _MGIMAGE_PCX16    { "pcx", __mg_init_pcx, __mg_load_pcx, __mg_cleanup_pcx, NULL, NULL },17 #endif18 #ifdef _MGIMAGE_TGA19    { "tga", __mg_init_tga, __mg_load_tga, __mg_cleanup_tga, NULL, NULL },20 #endif21 #ifdef _MGIMAGE_GIF22    { "gif", __mg_init_gif, __mg_load_gif, __mg_cleanup_gif, NULL, __mg_check_gif },23 #endif24 #ifdef _MGIMAGE_JPG25    { "jpg", __mg_init_jpg, __mg_load_jpg, __mg_cleanup_jpg, NULL, __mg_check_jpg },26    { "jpeg", __mg_init_jpg, __mg_load_jpg, __mg_cleanup_jpg, NULL, __mg_check_jpg },27 #endif28 #ifdef _MGIMAGE_PNG29    { "png", __mg_init_png, __mg_load_png, __mg_cleanup_png, NULL, __mg_check_png },30 #endif31 };

 

(2)位图填充
FillBoxWithBitmap 用设备相关位图对象填充矩形 框,可以用来扩大或者缩小位图;FillBoxWithBitmapPart 用设备相关位图对象的部分填充矩形框,也可以扩大或缩小位图。 
void GUIAPI FillBoxWithBitmap (HDC hdc, int x, int y, int w, int h, PBITMAP pBitmap);
void GUIAPI FillBoxWithBitmapPart (HDC hdc, int x, int y, int w, int h, int bw, int bh, PBITMAP pBitmap, int xo, int yo);
 
(3)位块传送
“位块传送(bit block transfer)”操作指的是把内存或显示RAM中的某块矩形区域的颜色数据复制到另一个内存或显示区域。 位块传送通常是一个高速的图像传送操作。
BitBlt 函数用来实现两个相同或不同的设备上下文之间的显示内存复 制,StretchBlt 则在 BitBlt的基础上进行缩放操作。
void GUIAPI BitBlt (HDC hsdc, int sx, int sy, int sw, int sh,  HDC hddc, int dx, int dy, DWORD dwRop);
void GUIAPI StretchBlt (HDC hsdc, int sx, int sy, int sw, int sh, HDC hddc, int dx, int dy, int dw, int dh, DWORD dwRop);
 
 

转载于:https://www.cnblogs.com/paullam/p/3759716.html

你可能感兴趣的文章
UMP系统功能 分库分表
查看>>
UMP系统功能 资源管理
查看>>
UMP系统功能 资源调度
查看>>
UMP系统功能 资源隔离
查看>>
UMP系统功能 数据安全
查看>>
Amazon AWS
查看>>
Amazon AWS EC2存储
查看>>
Amazon S3和EBS的区别
查看>>
AWS云管理平台
查看>>
NoSQL SimpleDB
查看>>
连接RDS数据库
查看>>
操作RDS数据库
查看>>
分布式并行编程
查看>>
将本地数据库迁移到云端RDS数据库
查看>>
Map和Reduce函数
查看>>
MapReduce模型简介
查看>>
MapReduce工作流程
查看>>
MapReduce的体系结构
查看>>
一个WordCount执行过程的实例
查看>>
MapReduce应用程序执行过程
查看>>