Поделиться через


Функция CopyImage (winuser.h)

Создает новое изображение (значок, курсор или растровое изображение) и копирует атрибуты указанного изображения в новое изображение. При необходимости функция растягивает биты в соответствии с требуемым размером нового изображения.

Синтаксис

HANDLE CopyImage(
  [in] HANDLE h,
  [in] UINT   type,
  [in] int    cx,
  [in] int    cy,
  [in] UINT   flags
);

Параметры

[in] h

Тип: HANDLE

Дескриптор копируемых изображений.

[in] type

Тип: UINT

Тип копируемых изображений. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
IMAGE_BITMAP
0
Копирует растровое изображение.
IMAGE_CURSOR
2
Копирует курсор.
IMAGE_ICON
1
Копирует значок.

[in] cx

Тип: int

Требуемая ширина изображения (в пикселях). Если значение равно нулю, то возвращаемое изображение будет иметь ту же ширину, что и исходный объект hImage.

[in] cy

Тип: int

Требуемая высота изображения (в пикселях). Если значение равно нулю, то возвращенное изображение будет иметь ту же высоту, что и исходный объект hImage.

[in] flags

Тип: UINT

Этот параметр может иметь одно или несколько из следующих значений.

Значение Значение
LR_COPYDELETEORG
0x00000008
Удаляет исходный образ после создания копии.
LR_COPYFROMRESOURCE
0x00004000
Пытается перезагрузить ресурс значка или курсора из исходного файла ресурсов, а не просто копировать текущее изображение. Это полезно для создания копии другого размера, если файл ресурсов содержит ресурс нескольких размеров. Без этого флага CopyImage растягивает исходное изображение до нового размера. Если этот флаг установлен, CopyImage использует размер в файле ресурсов, который ближе всего к нужному размеру. Это будет успешно, только если hImage был загружен LoadIcon или LoadCursor или LoadImage с флагом LR_SHARED.
LR_COPYRETURNORG
0x00000004
Возвращает исходный объект hImage , если он удовлетворяет критериям для копии, то есть правильным размерам и глубине цвета, в этом случае флаг LR_COPYDELETEORG игнорируется. Если этот флаг не указан, всегда создается новый объект .
LR_CREATEDIBSECTION
0x00002000
Если задано значение и создается новое растровое изображение, то растровое изображение создается как раздел DIB. В противном случае растровое изображение создается как зависимое от устройства растровое изображение. Этот флаг действителен, только если uType имеет IMAGE_BITMAP.
LR_DEFAULTCOLOR
0x00000000
Использует формат цвета по умолчанию.
LR_DEFAULTSIZE
0x00000040
Использует ширину или высоту, заданные значениями системных метрик для курсоров или значков, если значения cxDesired или cyDesired имеют нулевое значение. Если этот флаг не указан и для cxDesired и cyDesired задано значение 0, функция использует фактический размер ресурса. Если ресурс содержит несколько изображений, функция использует размер первого изображения.
LR_MONOCHROME
0x00000001
Создает новое монохромное изображение.

Возвращаемое значение

Тип: HANDLE

Если функция выполняется успешно, возвращаемое значение — это дескриптор созданного образа.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

После завершения использования ресурса можно освободить связанную с ним память, вызвав одну из функций, приведенных в следующей таблице.

Ресурс Функция Release
Bitmap DeleteObject
Курсор DestroyCursor
Значок DestroyIcon
 

Система автоматически удаляет ресурс после завершения процесса, однако вызов соответствующей функции экономит память и уменьшает размер рабочего набора процесса.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-gui-l1-3-0 (представлен в Windows 10 версии 10.0.10240)

См. также раздел

Основные понятия

LoadImage

Справочные материалы

Ресурсы