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);
     
     
  • 相关阅读:
    防火墙透明模式
    HP管理工具System Management Homepage安装配置
    kbmmw 中JSON 中使用SQL 查询
    kbmmw 中JSON 操作入门
    第一个kbmmw for Linux 服务器
    kbmmw 5.02发布
    kbmmw 5.01 发布
    使用delphi 10.2 开发linux 上的Daemon
    使用unidac 在linux 上无驱动直接访问MS SQL SERVER
    使用delphi 10.2 开发linux 上的webservice
  • 原文地址:https://www.cnblogs.com/paullam/p/3759716.html
Copyright © 2011-2022 走看看