GDI C / C ++ - BITMAP в существующий HBITMAP - PullRequest
0 голосов
/ 20 октября 2011

Как создать растровое изображение, совместимое с контекстом устройства, а затем связать полученный дескриптор со структурой BITMAP?Если я напишу:

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

Создается дескриптор HBITMAP, совместимый с hdc, и затем инициализируется новый HBITMAP (заполненный растровыми данными), но без сохранения его совместимости.Существует ли функция, которая позволяет не создавать HBITMAP из BITMAP, а заполнять инициализированный HBITMAP уже существующим источником BITMAP?

Ответы [ 2 ]

1 голос
/ 20 октября 2011

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 Желаемая ширина изображения в пикселях. Если это ноль, то возвращаемое изображение будет иметь ту же ширину, что и исходное изображение.

cyDesired Желаемая высота изображения в пикселях. Если это ноль, то возвращаемое изображение будет иметь ту же высоту, что и исходное изображение.

fuFlags

0 голосов
/ 20 октября 2011

CreateBitmapIndirect принимает BITMAP на своем входе.И вы можете получить его через GetObject из HBITMAP:

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

CreateBitmapIndirect сможет создать растровое изображение из этой структуры.Или вы можете использовать CreateCompatibleBitmap для создания совместимого растрового изображения, обеспечивающего ширину / высоту из полученного Bitmap.

...