_GDIPlus_ImageAttributesSetColorMatrix
Устанавливает или сбрасывает установки цвета или градаций серого в матрице для указанной категории
#Include <GDIP.au3>
_GDIPlus_ImageAttributesSetColorMatrix($hImageAttributes[, $iColorAdjustType = 0[, $fEnable = False,[ $pClrMatrix = 0[, $pGrayMatrix = 0[, $iColorMatrixFlags = 0]]]]])
Параметры
$hImageAttributes | Указатель на объект ImageAttributes |
$iColorAdjustType |
[необязательный] Категория, для которой устанавливается или сбрасывается установки цвета или градаций серого в матрице: 0 - Настройки цвета или градации серого применяются для всех категорий, у которых нет собственных настроек 1 - Настройки цвета или градации серого применяются для bitmap изображений 2 - Настройки цвета или градации серого применяются для операций кисти в метафайлах 3 - Настройки цвета или градации серого применяются для операций карандаша в метафайлах 4 - Настройки цвета или градации серого применяются для текста в метафайлах |
$fEnable |
[необязательный] Устанавливает или сбрасывает True - Устанавливает False - Сбрасывает |
$pClrMatrix |
[необязательный] Указатель на структуру $tagGDIPCOLORMATRIX, которая определяет установки цвета матрицы |
$pGrayMatrix |
[необязательный] Указатель на структуру $tagGDIPCOLORMATRIX, которая определяет установки градаций серого матрицы |
$iColorMatrixFlags |
[необязательный] Тип изображения и цвет, которые будут затронуты в результате настройки матриц: 0 - Все значения цвета (в том числе серого) устанавливаются той же матрицей настройки цвета 1 - Цвета устанавливаются, но серые оттенки не корректируются. Серым оттенком является любой цвет, который имеет одинаковое значение для каждой его компоненты: красный, зеленый и синий. 2 - Цвета настраиваются одной матрицей, а серые оттенки другой матрицей |
Возвращаемое значение
Успех: | Возвращает True |
Ошибка: | Возвращает False, либо: |
Если ошибка DllCall(), устанавливает @error и @extended возвращённые вызовом DllCall() | |
$GDIP_STATUS содержит не нулевое значение кода ошибки. |
См. также
_GDIPlus_ColorMatrixCreate,Пример
#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
_Example()
Func _Example()
Local $hGUI, $hGraphics, $hBmp, $hBitmap, $tPreHue, $tPostHue, $tColorMatrix, $pColorMatrix, $iWidth, $iHeight, $aSize
Local $hBrightIA, $hHueIA, $hGrayIA, $hContIA
; Инициализирует библиотеку GDI+
_GDIPlus_Startup()
; Создаёт GUI (нажмите ESC для выхода)
$hGUI = GUICreate("", @DesktopWidth, @DesktopHeight)
; Создаёт графический объект из дескриптора окна
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
; Делает снимок экрана
$hBmp = _ScreenCapture_Capture("", 0, 0, -1, -1, False)
; Создаёт объект GDI+ Bitmap из объекта GDI Bitmap
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)
; Создаёт объект яркости ImageAttributes
$hBrightIA = _GDIPlus_ImageAttributesCreate()
; Создаёт объект тона ImageAttributes
$hHueIA = _GDIPlus_ImageAttributesCreate()
; Создаёт объект градаций серого ImageAttributes
$hGrayIA = _GDIPlus_ImageAttributesCreate()
; Создаёт объект контраста ImageAttributes
$hContIA = _GDIPlus_ImageAttributesCreate()
; Создаёт цветовую матрицу яркости
$tColorMatrix = _GDIPlus_ColorMatrixCreateTranslate(0.5, 0.5, 0.5)
$pColorMatrix = DllStructGetPtr($tColorMatrix)
; Устанавливает яркость изображения, на 50% ярче
_GDIPlus_ImageAttributesSetColorMatrix($hBrightIA, 0, True, $pColorMatrix)
; Create the identity color matrix и цветовую матрицу тона
$tColorMatrix = _GDIPlus_ColorMatrixCreate()
$tPreHue = _GDIPlus_ColorMatrixCreate()
$tPostHue = _GDIPlus_ColorMatrixCreate()
_GDIPlus_ColorMatrixInitHue($tPreHue, $tPostHue)
$pColorMatrix = DllStructGetPtr($tColorMatrix)
; Устанавливает тон изображения с поворотом на 90 градусов
_GDIPlus_ColorMatrixRotateHue($tColorMatrix, $tPreHue, $tPostHue, 90)
_GDIPlus_ImageAttributesSetColorMatrix($hHueIA, 0, True, $pColorMatrix)
; Создаёт цветовую матрицу градаций серого
$tColorMatrix = _GDIPlus_ColorMatrixCreateGrayScale()
$pColorMatrix = DllStructGetPtr($tColorMatrix)
; Устанавливает цвета изображения в градации серого
_GDIPlus_ImageAttributesSetColorMatrix($hGrayIA, 0, True, $pColorMatrix)
; Создаёт цветовую матрицу контраста
$tColorMatrix = _GDIPlus_ColorMatrixCreateScale(4, 4, 4)
$pColorMatrix = DllStructGetPtr($tColorMatrix)
; Исправляет цвета, вращением тона
_GDIPlus_ColorMatrixRotateHue($tColorMatrix, $tPreHue, $tPostHue, 0)
; Устанавливает контрастность изображения
_GDIPlus_ImageAttributesSetColorMatrix($hContIA, 0, True, $pColorMatrix)
GUISetState()
; Получает размеры изображения
$aSize = _GDIPlus_ImageGetDimension($hBitmap)
$iWidth = $aSize[0]
$iHeight = $aSize[1]
; Устанавливает режим интерполяции, влияющий на качество
_GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7)
; Рисует изображение устанавливая яркость
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, 0, @DesktopWidth/2, @DesktopHeight/2, $hBrightIA)
; Рисует изображение устанавливая тон
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, @DesktopWidth/2, 0, @DesktopWidth/2, @DesktopHeight/2, $hHueIA)
; Рисует изображение устанавливая цветовую матрицу градаций серого
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, 0, @DesktopHeight/2, @DesktopWidth/2, @DesktopHeight/2, $hGrayIA)
; Рисует изображение устанавливая контраст
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight, @DesktopWidth/2, @DesktopHeight/2, @DesktopWidth/2, @DesktopHeight/2, $hContIA)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Освобождает ресурсы
_GDIPlus_ImageAttributesDispose($hContIA)
_GDIPlus_ImageAttributesDispose($hGrayIA)
_GDIPlus_ImageAttributesDispose($hHueIA)
_GDIPlus_ImageAttributesDispose($hBrightIA)
_WinAPI_DeleteObject($hBmp)
_GDIPlus_ImageDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
; Закрывает библиотеку GDI+
_GDIPlus_Shutdown()
EndFunc