从RGB数组在内存创建位图

来源:百度知道 编辑:UC知道 时间:2024/06/30 15:56:12
例如我自己做一种图片格式,打开后可以得到包含RGB值的数组,有什么办法可以把从这个数组创建位图,并得到句柄.我知道可以先创建图再写入内容,但这样电脑的工作就多了,创建空白图时己经写和空白内容了.

CreateDIBitmap 函数功能:该函数由与设备无关的位图(DIB)创建与设备有关的位图(DDB),并且有选择地为位图置位。
函数原型:HBITMAP CreateDIBitmap(HDC hdc,CONST BITMAPINFONEADER *lpbmih,DWORD fdwlnit,CONST VOID *lpblnit,CONST BITMAPINFO *lpbmi,UINT fuUsage);
VB声明:Private Declare Function CreateDIBitmap Lib "gdi32" Alias "CreateDIBitmap" (ByVal hdc As Long, lpInfoHeader As BITMAPINFOHEADER, ByVal dwUsage As Long, lpInitBits As Any, lpInitInfo As BITMAPINFO, ByVal wUsage As Long) As Long

参数:
hdc:设备环境句柄。
lpbmih:指向位图信息头结构的指针,它可以是下列操作系统位图信息头之一:
Windows NT 3.51和早期:BITMAPINFOHEADER;Windows NT 4.0和Windows 95:BITMAPV4HEADER;
Windows NT 5.0和Windows 98:BITMAPV5HEADER。
如果fdwlnit是CBM_INIT,那么函数使用位图信息头结构来获取位图所需的宽度、高度以及其他信息。
注意高度若是正数,那么表示是自底向上DIB,而负数表示为自顶向下DIB,这种情况与CreateDIBitmap函数兼容。
Fdwlnit:位标识集。它指定系统如何对位图的位进行初始化。
下面是定义的位标志常量:
CBM_INIT:如果设置了该标志,那么系统将使用lpblnit和lpbmi两个参数指向的数据来对位图中的位进行初始化。如果没有该标志,那么表示上述两个参数指向的数据无效。如果fdwlnit为0,那么系统不会对位图的位进行初始化。<