GDI C/C++ - 将 BITMAP 转换为现有的 HBITMAP

发布于 2024-12-10 17:36:35 字数 423 浏览 1 评论 0原文

如何创建设备上下文兼容的位图,然后将获得的句柄关联到 BITMAP 结构? 如果我写:

...
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?

How can I create a device context compatible bitmap and then associating the obtained handle to a BITMAP struct?
If I write:

...
HBITMAP hbitmap = CreateCompatibleBitmap(hdc, width, height); // these three arguments are initialized somewhere else
hbitmap = CreateBitmapIndirect(bitmap); // argument already initialized and properly filled
...

A HBITMAP handle compatible with hdc is created, and then a new HBITMAP (filled with bitmap data) is initialized, though without keeping its compatibility. Is there a function which allows not to create a HBITMAP from a BITMAP, but rather fills an initialized HBITMAP with an already existing BITMAP source?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

耀眼的星火 2024-12-17 17:36:35

CopyImage 函数

创建一张新图像(图标、光标或位图)并将指定图像的属性复制到新图像。如有必要,该函数会拉伸这些位以适合新图像所需的大小。

HANDLE WINAPI CopyImage(
  HANDLE hImage,
  UINT uType,
  int cxDesired,
  int cyDesired,
  UINT fuFlags
);

hImage 要复制的图像的句柄。

uType 要复制的图像的类型。该参数可以是以下值之一。

  • IMAGE_BITMAP 0 复制位图。
  • IMAGE_ICON 1 复制图标。
  • IMAGE_CURSOR 2 复制光标。

cxDesired 图像的所需宽度(以像素为单位)。如果为零,则返回的图像将具有与原始 hImage 相同的宽度。

cyDesired 图像的所需高度(以像素为单位)。如果为零,则返回的图像将与原始 hImage 具有相同的高度。

标志位

CopyImage function

Creates a new image (icon, cursor, or bitmap) and copies the attributes of the specified image to the new one. If necessary, the function stretches the bits to fit the desired size of the new image.

HANDLE WINAPI CopyImage(
  HANDLE hImage,
  UINT uType,
  int cxDesired,
  int cyDesired,
  UINT fuFlags
);

hImage A handle to the image to be copied.

uType The type of image to be copied. This parameter can be one of the following values.

  • IMAGE_BITMAP 0 Copies a bitmap.
  • IMAGE_ICON 1 Copies an icon.
  • IMAGE_CURSOR 2 Copies a cursor.

cxDesired The desired width, in pixels, of the image. If this is zero, then the returned image will have the same width as the original hImage.

cyDesired The desired height, in pixels, of the image. If this is zero, then the returned image will have the same height as the original hImage.

fuFlags

那伤。 2024-12-17 17:36:35

CreateBitmapIndirect 在其输入上采用BITMAP。您可以通过 GetObject< 获取它来自 HBITMAP 的 /code>

BITMAP Bitmap;
INT nResult = GetObject((HGDIOBJ) hBitmap, sizeof Bitmap, &Bitmap);

CreateBitmapIndirect 将能够从此结构创建位图。或者,您可以使用CreateCompatibleBitmap创建兼容位图,并从获取的Bitmap提供宽度/高度。

CreateBitmapIndirect takes BITMAP on its input. And you can get it via GetObject from HBITMAP:

BITMAP Bitmap;
INT nResult = GetObject((HGDIOBJ) hBitmap, sizeof Bitmap, &Bitmap);

CreateBitmapIndirect will be able create a bitmap from this struct. Or you can use CreateCompatibleBitmap to create compatible bitmap providing width/height from obtained Bitmap.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文