_GDIPlus_ImageAttributesSetGamma
Устанавливает или сбрасывает значение гаммы для указанной категории
#Include <GDIP.au3>
_GDIPlus_ImageAttributesSetGamma($hImageAttributes[, $iColorAdjustType = 0[, $fEnable = False[, $nGamma = 0]]])
Параметры
$hImageAttributes | Указатель на объект ImageAttributes |
$iColorAdjustType |
[необязательный] Категория, для которой устанавливается или сбрасывается цветовая гамма: 0 - Настройки цветовой гаммы для всех категорий, у которых нет собственных настроек 1 - Настройки цветовой гаммы для bitmap изображений 2 - Настройки цветовой гаммы для операций кисти в метафайлах 3 - Настройки цветовой гаммы для операций карандаша в метафайлах 4 - Настройки цветовой гаммы для текста в метафайлах |
$fEnable |
[необязательный] Устанавливает или сбрасывает True - Устанавливает False - Сбрасывает |
$nGamma |
[необязательный] Вещественное число, которое определяет значение гаммы |
Возвращаемое значение
Успех: | Возвращает True |
Ошибка: | Возвращает False, либо: |
Если ошибка DllCall(), устанавливает @error и @extended возвращённые вызовом DllCall() | |
$GDIP_STATUS содержит не нулевое значение кода ошибки. |
Примечания
Гамма-коррекция регулирует общую яркость изображения обычно в диапазоне от 1,0 до 2,2, однако, значения от 0,1 до 5,0 может оказаться полезным при некоторых обстоятельствах.Пример
#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
_Example()
Func _Example()
Local $hGUI, $hGraphics, $hBmp, $hBitmap, $hIA, $iWidth, $iHeight, $aSize
; Инициализирует библиотеку GDI+
_GDIPlus_Startup()
; Создаёт GUI (нажмите ESC для выхода)
$hGUI = GUICreate("", @DesktopWidth, @DesktopHeight)
; Создаёт графический объект из дескриптора окна
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
; Устанавливает режим интерполяции, влияющий на качество
_GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7)
; Делает снимок экрана
$hBmp = _ScreenCapture_Capture("", 0, 0, -1, -1, False)
; Создаёт объект GDI+ Bitmap из объекта GDI Bitmap
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)
; Создаёт объект ImageAttributes, используемый для настройки гаммы
$hIA = _GDIPlus_ImageAttributesCreate()
; Получает размеры изображения
$aSize = _GDIPlus_ImageGetDimension($hBitmap)
$iWidth = $aSize[0]
$iHeight = $aSize[1]
GUISetState()
; Рисует изображения 4 раза с различными значениями гаммы
_GDIPlus_ImageAttributesSetGamma($hIA, 0, True, 0.5)
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, 0, @DesktopWidth/2, @DesktopHeight/2, $hIA)
_GDIPlus_ImageAttributesSetGamma($hIA, 0, True, 1)
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, @DesktopWidth/2, 0, @DesktopWidth/2, @DesktopHeight/2, $hIA)
_GDIPlus_ImageAttributesSetGamma($hIA, 0, True, 2)
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, @DesktopHeight/2, @DesktopWidth/2, @DesktopHeight/2, $hIA)
_GDIPlus_ImageAttributesSetGamma($hIA, 0, True, 4)
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, @DesktopWidth/2, @DesktopHeight/2, @DesktopWidth/2, @DesktopHeight/2, $hIA)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Освобождает ресурсы
_GDIPlus_ImageAttributesDispose($hIA)
_GDIPlus_ImageDispose($hBitmap)
_WinAPI_DeleteObject($hBmp)
_GDIPlus_GraphicsDispose($hGraphics)
; Закрывает библиотеку GDI+
_GDIPlus_Shutdown()
EndFunc