GDI C/ c++ - BITMAP转换成现有的HBITMAP
GDI C/C++ - BITMAP into an existing HBITMAP
如何创建设备上下文兼容的位图,然后将获得的句柄关联到位图结构体?如果我写:
...
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
中获得的宽度/高度。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 将位数组转换为 HBITMAP 后 bmBits 的 NULL 指针
- MFC如何将带有透明属性的PNG转换为HBITMAP
- Hbitmap/BITMAP转换成.bmp文件
- GDI C/ c++ - BITMAP转换成现有的HBITMAP
- 如何将像素数组转换为HBITMAP
- 将HBITMAP转换为cv::Mat
- 从HBITMAP转换到IWICBitmap
- 将BITMAP转换为HBITMAP
- 如何将HBITMAP转换为JNI的BYTE数组