Функция _GDIPlus_GraphicsEndContainer

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


_GDIPlus_GraphicsEndContainer

Закрывает ранее открытый графический контейнер

#Include <GDIP.au3>
_GDIPlus_GraphicsEndContainer($hGraphics, $iGraphicsContainer)

Параметры

$hGraphics Указатель на объект Graphics
$iGraphicsContainer Значение, идентифицирующее графический контейнер GraphicsContainer

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

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

Примечания

Используйте эту функцию, чтобы закрыть ранее созданный графический контейнер.
Внимание: Когда вы вызываете _GDIPlus_GraphicsEndContainer, все информационные блоки помещенные в стек (функциями _GDIPlus_GraphicsSave или _GDIPlus_GraphicsBeginContainer) после соответствующего вызова _GDIPlus_GraphicsBeginContainer будут удалены из стека. Аналогично, когда вы вызываете _GDIPlus_GraphicsRestore, все информационные блоки помещенные в стек после соответствующего вызова _GDIPlus_GraphicsSave будут удалены из стека.

См. также

_GDIPlus_GraphicsBeginContainer, _GDIPlus_GraphicsBeginContainer2

Пример

; Authenticity
; http://www.autoitscript.com/forum/index.php?showtopic=106021
#include <GDIP.au3>
#include <GUIConstantsEx.au3>

_Example()

Func _Example()
    Local $hGUI, $hGraphics, $hBrush, $iGraphicsCont

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

    $hGUI = GUICreate("Завершает графический контейнер", 400, 350)
    GUISetState()

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

    ;  Устанавливает область отсечения для объекта Graphics
    _GDIPlus_GraphicsSetClipRect($hGraphics, 10, 10, 150, 150)

    ; Создаёт графический контейнер
    $iGraphicsCont = _GDIPlus_GraphicsBeginContainer2($hGraphics)

    ; Устанавливает дополнительную область отсечения для контейнера
    _GDIPlus_GraphicsSetClipRect($hGraphics, 100, 50, 100, 75)

    ; Заполняет красным прямоугольник в контейнере
    $hBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ; Красный
    _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush)

    ; Завершает контейнер и сбрасывает состояние graphics в состояние, которое было перед началом создания контейнера
    _GDIPlus_GraphicsEndContainer($hGraphics, $iGraphicsCont)

    ; Заполняет синим прямоугольник вне контейнера
    _GDIPlus_BrushSetFillColor($hBrush, 0x800000FF) ; Полупрозрачный синий
    _GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush)

    ; Устанавливает область отсечения в бесконечность, и рисует контуры двух предыдущих областей отсечения
    _GDIPlus_GraphicsResetClip($hGraphics)
    _GDIPlus_GraphicsDrawRect($hGraphics, 10, 10, 150, 150)
    _GDIPlus_GraphicsDrawRect($hGraphics, 100, 50, 100, 75)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Освобождает ресурсы
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGraphics)

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