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

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

Syntax

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

Parameters

[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. В противном случае изображение растрового изображения создается как зависимый от устройства растровый рисунок. Этот флаг действителен только в том случае, если uTypeIMAGE_BITMAP.
LR_DEFAULTCOLOR
0x00000000
Использует формат цвета по умолчанию.
LR_DEFAULTSIZE
0x00000040
Использует ширину или высоту, указанную значениями системных метрик для курсоров или значков, если значения cx или cy равны нулю. Если этот флаг не указан, а cx и cy заданы равным нулю, функция использует фактический размер ресурса. Если ресурс содержит несколько изображений, функция использует размер первого изображения.
LR_MONOCHROME
0x00000001
Создает новое монохромное изображение.

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

Тип: HANDLE

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

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

Замечания

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

Ресурс Функция выпуска
Битмап DeleteObject
Курсор DestroyCursor
Icon DestroyIcon
 

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

Требования

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

См. также

Концептуальный

LoadImage

Ссылки

Ресурсы