Функция _GDIPlus_ImageAttributesSetNoOp

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


_GDIPlus_ImageAttributesSetNoOp

Включает или отключает настройки цвета для указанной категории

#Include <GDIP.au3>
_GDIPlus_ImageAttributesSetNoOp($hImageAttributes[, $iColorAdjustType = 0[, $fEnable = True]])

Параметры

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

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

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

Пример

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

Global Const $sFileName = @MyDocumentsDir & "\SampleMeta.emf"

_Example()

Func _Example()
    Local $hGUI, $hGraphics, $hMetafile, $hIA, $tColorMatrix, $pColorMatrix

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

   
    $hGUI = GUICreate("_GDIPlus_ImageAttributesSetNoOp Example", 600, 350)
    GUISetState()

    ; Создаёт графический объект из дескриптора окна
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    _CreateTestMetafile($hGraphics)

    ; Создаёт объект Metafile из образца в виде файла метафайла и начинает воспроизведение записи
    $hMetafile = _GDIPlus_MetafileCreateFromFile($sFileName)

    ; Создаёт объект ImageAttributes, используемый для настройки цветов изображения
    $hIA = _GDIPlus_ImageAttributesCreate()

    ; Create a ColorMatrix that converts red to green
    $tColorMatrix = _ColorMatrixCreateRedToGreen()
    $pColorMatrix = DllStructGetPtr($tColorMatrix)

    ; Set the ImageAttributes ColorMatrix, applies color adjustment to pens and brushes
    _GDIPlus_ImageAttributesSetColorMatrix($hIA, 2, True, $pColorMatrix)
    _GDIPlus_ImageAttributesSetColorMatrix($hIA, 3, True, $pColorMatrix)

    ; Отключает настройку цвета для карандаша и включает для кисти
    _GDIPlus_ImageAttributesSetNoOp($hIA, 2, False) ; включает
    _GDIPlus_ImageAttributesSetNoOp($hIA, 3, True)  ; выключает

    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hMetafile, 0, 0, 200, 350, 0, 0, 200, 350, $hIA)

    ; Отключает настройку цвета для кисти и включает для карандаша
    _GDIPlus_ImageAttributesSetNoOp($hIA, 2, True)  ; выключает
    _GDIPlus_ImageAttributesSetNoOp($hIA, 3, False) ; включает
    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hMetafile, 0, 0, 200, 350, 200, 0, 200, 350, $hIA)

    ; Восстанавливает настройки цвета для кисти и отключает для карандаша
    _GDIPlus_ImageAttributesSetNoOp($hIA, 2, False) ; включает
    _GDIPlus_ImageAttributesSetNoOp($hIA, 3, True)  ; выключает

    _GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hMetafile, 0, 0, 200, 350, 400, 0, 200, 350, $hIA)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Освобождает ресурсы
    _GDIPlus_ImageAttributesDispose($hIA)
    _GDIPlus_ImageDispose($hMetafile)
    _GDIPlus_GraphicsDispose($hGraphics)

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

; Эта функция Создаёт и сохраняет образец метафайла
Func _CreateTestMetafile($hGraphics)
    Local $hDC, $hMetafile, $hRedBrush, $hRedPen, $hImageContext

    ; Получает контекст устройства графического объекта, который будет связан с метафайлом
    $hDC = _GDIPlus_GraphicsGetDC($hGraphics)

    ; Создаёт объект Metafile для записи
    $hMetafile = _GDIPlus_MetafileRecordFileName($sFileName, $hDC)

    ; Получает графический контекст изображения, любое рисование сохраняется в метафайл
    $hImageContext = _GDIPlus_ImageGetGraphicsContext($hMetafile)

    ; Record a filled red rectangle
    $hRedBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ; Красный
    _GDIPlus_GraphicsFillRect($hImageContext, 0, 0, 200, 175, $hRedBrush)

    ; Record another action by drawing an ellipse using a red pen
    $hRedPen = _GDIPlus_PenCreate(0xFFFF0000, 5)
    _GDIPlus_GraphicsDrawEllipse($hImageContext, 0, 175, 200, 175, $hRedPen)

    ; Освобождает контекст устройства
    _GDIPlus_GraphicsReleaseDC($hGraphics, $hDC)

    ; Сохраняет метафайл
    _GDIPlus_GraphicsDispose($hImageContext) ; Изображение сохраняется и особая блокировка разблокирована

    ; Освобождает ресурсы
    _GDIPlus_PenDispose($hRedPen)
    _GDIPlus_BrushDispose($hRedBrush)
    _GDIPlus_ImageDispose($hMetafile)
EndFunc

; Эта функция Создаёт структуру ColorMatrix, которые преобразуют красный цвет в зеленый
Func _ColorMatrixCreateRedToGreen()
    Local $tColorMatrix

    $tColorMatrix = _GDIPlus_ColorMatrixCreate()
    DllStructSetData($tColorMatrix, "m", 0, 1) ; Scaling factor of red component is 0 (nothing)
    DllStructSetData($tColorMatrix, "m", 1, 2) ; Scaling factor of green component of the red channel is 1 (red becomes green)

    Return $tColorMatrix
EndFunc