Функция _GDIPlus_ImageAttributesSetColorMatrix

         Описание функции


_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