Функция _GDIPlus_ImageAttributesSetRemapTable

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


_GDIPlus_ImageAttributesSetRemapTable

Устанавливает или очищает таблицу преобразования цветов для указанной категории

#Include <GDIP.au3>
_GDIPlus_ImageAttributesSetRemapTable($hImageAttributes[, $iColorAdjustType = 0[, $fEnable = False[, $aColorMap = 0]]])

Параметры

$hImageAttributes Указатель на объект ImageAttribute
$iColorAdjustType [необязательный] Категория, для которой устанавливается или сбрасывается таблица преобразования цветов:
0 - Настройки цвета применяются для всех категорий, у которых нет собственных настроек
1 - Настройки цвета применяются для bitmap изображений
2 - Настройки цвета применяются для операций кисти в метафайлах
3 - Настройки цвета применяются для операций карандаша в метафайлах
4 - Настройки цвета применяются для текста в метафайлах
$fEnable [необязательный] Флаг установки или очистки таблицы преобразования цветов
True - Устанавливает
False - Очищает
$aColorMap [необязательный] Массив старых и новых цветов:
[0][0] - Количество старых и новых цветов
[1][0] - Старый цвет 1
[1][1] - Новый цвет 1
[2][0] - Старый цвет 2
[2][1] - Новый цвет 2
...
[n][0] - Старый цвет n
[n][2] - Новый цвет n

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

Успех:Возвращает True
Ошибка:Возвращает False, либо:
Если ошибка DllCall(), устанавливает @error и @extended возвращённые вызовом DllCall()
$GDIP_STATUS содержит не нулевое значение кода ошибки.

Примечания

В процессе преобразования, любой цвет, который соответствует любому из старых цветов в таблице изменяется на соответствующий новый цвет

См. также

Искать GdipSetImageAttributesRemapTable в библиотеке MSDN

Пример

#include <GDIP.au3>
#include <GUIConstantsEx.au3>

_Example()

Func _Example()
    Local $hGUI, $hGraphics, $hRedBrush, $hGreenBrush, $hBlueBrush, $hBitmap, $hBitmapContext, $hIA, $iI, $iJ, $aRemapTable[4][2]

    ; Инициализирует библиотеку GDI+
    _GDIPlus_Startup()

    $hGUI = GUICreate("С таблицей преобразования цветов", 420, 350)
    GUISetState()

    ; Создаёт графический объект из дескриптора окна
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    ; Создаёт объект Bitmap и получает его графический контекст
    $hBitmap = _GDIPlus_BitmapCreateFromScan0(200, 200)
    $hBitmapContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)

    ; Создаёт 3 кисти 3-х различных цветов: красный, зеленый и синий
    $hRedBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ; Красный
    $hGreenBrush = _GDIPlus_BrushCreateSolid(0xFF00FF00) ; Зеленый
    $hBlueBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF) ; Синий

    For $iI = 0 To 9
        For $iJ = 0 To 9
            Switch Random(1, 3, 1)
                Case 1
                    _GDIPlus_GraphicsFillRect($hBitmapContext, $iI*20, $iJ*20, 20, 20, $hRedBrush)
                Case 2
                    _GDIPlus_GraphicsFillRect($hBitmapContext, $iI*20, $iJ*20, 20, 20, $hGreenBrush)
                Case Else
                    _GDIPlus_GraphicsFillRect($hBitmapContext, $iI*20, $iJ*20, 20, 20, $hBlueBrush)
            EndSwitch
        Next
    Next

    ; Рисует объект изображения
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)

    ; Создаёт объект ImageAttribute для применения установок
    $hIA = _GDIPlus_ImageAttributesCreate()

    ; Создание массива являющегося таблицей переназначения цветов
    $aRemapTable[0][0] = 3 ; 3 цвета
    ; Заменяет красный голубым
    $aRemapTable[1][0] = 0xFFFF0000
    $aRemapTable[1][1] = 0xFF00FFFF
    ; Заменяет зеленый синим
    $aRemapTable[2][0] = 0xFF00FF00
    $aRemapTable[2][1] = 0xFF0000FF
    ; Заменяет синий желтым
    $aRemapTable[3][0] = 0xFF0000FF
    $aRemapTable[3][1] = 0xFFFFFF00

    ; Устанавливает таблицу преобразования цветов
    _GDIPlus_ImageAttributesSetRemapTable($hIA, 1, True, $aRemapTable)

    ; Рисует копию изображения с преобразованными цветами
    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, 200, 200, 220, 0, 200, 200, $hIA)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Освобождает ресурсы
    _GDIPlus_ImageAttributesDispose($hIA)
    _GDIPlus_BrushDispose($hBlueBrush)
    _GDIPlus_BrushDispose($hGreenBrush)
    _GDIPlus_BrushDispose($hRedBrush)
    _GDIPlus_GraphicsDispose($hBitmapContext)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)

    ; Закрывает библиотеку GDI+
    _GDIPlus_Shutdown()
EndFunc