如何创建设备上下文兼容的位图,然后将获得的句柄关联到位图结构体?如果我写:
...
HBITMAP hbitmap = CreateCompatibleBitmap(hdc, width, height); // these three arguments are initialized somewhere else
hbitmap = CreateBitmapIndirect(bitmap); // argument already initialized and properly filled
...
创建一个与hdc兼容的HBITMAP句柄,然后初始化一个新的HBITMAP(填充位图数据),但不保持其兼容性。是否有一个函数允许不从BITMAP创建HBITMAP,而是用已经存在的BITMAP源填充初始化的HBITMAP ?
CopyImage function
创建新图像(图标、光标或位图),并将指定图像的属性复制到新图像上。如果有必要,该函数会拉伸这些位以适应所需的新图像的大小。
HANDLE WINAPI CopyImage(
HANDLE hImage,
UINT uType,
int cxDesired,
int cyDesired,
UINT fuFlags
);
要复制的图像的句柄。
uType要复制的图像类型。该参数可以是以下值之一:
- IMAGE_BITMAP 0复制位图。
- IMAGE_ICON 1复制一个图标
- IMAGE_CURSOR 2复制一个游标。
cxDesired图像的期望宽度,以像素为单位。如果该值为0,则返回的图像将具有与原始hImage相同的宽度。
cyDesired图像的期望高度,以像素为单位。如果此值为零,则返回的图像将具有与原始hImage相同的高度。
fuFlags
CreateBitmapIndirect
取BITMAP
作为其输入。你可以从HBITMAP
得到GetObject
:
BITMAP Bitmap;
INT nResult = GetObject((HGDIOBJ) hBitmap, sizeof Bitmap, &Bitmap);
CreateBitmapIndirect
将能够从这个结构体创建一个位图。或者您可以使用CreateCompatibleBitmap
来创建兼容的位图,提供从获得的Bitmap
中获得的宽度/高度。