zoukankan      html  css  js  c++  java
  • 把資源加载到内存中 BMP 出错

    BMP文件放到VS的資源中時,VS會將BMP的文件頭去掉,即BITMAPFILEHEADER,這個結構體去除。所以當加載BMP到內存中時,如果是使用GDI+或是其它解釋庫時,會解析失敗。

    所以在讀取BMP資源時,需要加上BITMAPFILEHEADER結構體。

    // pvResData  為已經讀入到內存的BMP數據。
    //获得位图信息头  
            BITMAPINFOHEADER bmpInfoHdr;  
            CopyMemory(&bmpInfoHdr, pvResData, sizeof(BITMAPINFOHEADER));  
            //获得位图颜色表中RGBQUAD结构的个数  
            long nColorEntries;  
            switch(bmpInfoHdr.biBitCount)  
            {  
            case 1:  
                nColorEntries = 2;  
                break;  
            case 4:  
                nColorEntries = 16;  
                break;  
            case 8:  
                nColorEntries = 256;  
                break;  
            default:  
                nColorEntries = 0;  
            }  
            //根据位图信息头创建位图文件头  
            BITMAPFILEHEADER bmpFileHdr;  
            bmpFileHdr.bfType = 0x4d42;  // 'BM'  
            bmpFileHdr.bfSize = sizeof(BITMAPINFOHEADER) + dwResSize;  
            bmpFileHdr.bfReserved1 = bmpFileHdr.bfReserved2 = 0;  
            bmpFileHdr.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * nColorEntries;  
            //写入位图文件头 
    //...
    // 再寫入 pvResData
    

      參考:

    http://blog.csdn.net/lyserver/article/details/2874366

  • 相关阅读:
    合并两个有序链表
    有效括号方法二
    有效括号
    es6 中的模块化
    XMLHttpRequest 对象
    AST
    php读写文件方式
    vue开发中遇到的问题
    sublime操作
    cmd命令
  • 原文地址:https://www.cnblogs.com/lin1270/p/3685153.html
Copyright © 2011-2022 走看看