zoukankan      html  css  js  c++  java
  • MiniGUI

    (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 #endif
    11 
    12 #ifdef _MGIMAGE_LBM
    13    { "lbm", __mg_init_lbm, __mg_load_lbm, __mg_cleanup_lbm, NULL, __mg_check_lbm },
    14 #endif
    15 #ifdef _MGIMAGE_PCX
    16    { "pcx", __mg_init_pcx, __mg_load_pcx, __mg_cleanup_pcx, NULL, NULL },
    17 #endif
    18 #ifdef _MGIMAGE_TGA
    19    { "tga", __mg_init_tga, __mg_load_tga, __mg_cleanup_tga, NULL, NULL },
    20 #endif
    21 #ifdef _MGIMAGE_GIF
    22    { "gif", __mg_init_gif, __mg_load_gif, __mg_cleanup_gif, NULL, __mg_check_gif },
    23 #endif
    24 #ifdef _MGIMAGE_JPG
    25    { "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 #endif
    28 #ifdef _MGIMAGE_PNG
    29    { "png", __mg_init_png, __mg_load_png, __mg_cleanup_png, NULL, __mg_check_png },
    30 #endif
    31 };
    (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);
     
     
  • 相关阅读:
    FastAdmin 后台 UserRule 勾选不完整 Bug 修复
    FastAdmin 2018-05-26 更新时更新了 SQL 文件 关于 ROW_FORMAT=DYNAMIC 改为 ROW_FORMAT=COMPACT 问题
    锂电池修复记
    FastAdmin 导出 Excel 相关资料收集 (2018-08-14)
    自己写的jQuery颜色插件
    自己写的jQuery拖动滑块
    自己写的一个jQuery分页插件
    手贱,写个call玩玩.
    关闭浏览器时的友情提醒jQuery写法
    javascript callee和caller
  • 原文地址:https://www.cnblogs.com/paullam/p/3759716.html
Copyright © 2011-2022 走看看