Функция _GDIPlus_GraphicsBeginContainer2

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


_GDIPlus_GraphicsBeginContainer2

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

#Include <GDIP.au3>
_GDIPlus_GraphicsBeginContainer2($hGraphics)

Параметры

$hGraphics Указатель на объект Graphics

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

Успех:Возвращает GraphicsContainer, который может быть передан в _GDIPlus_GraphicsEndContainer для восстановления предыдущего состояния объекта Graphics
Ошибка:Возвращает -1, либо:
Если ошибка DllCall(), устанавливает @error и @extended возвращённые вызовом DllCall()
$GDIP_STATUS содержит не нулевое значение кода ошибки.

Примечания

Используйте эту функцию для создания вложенных графических контейнеров. Графические контейнеры используются для сохранения состояния Graphics, такие как преобразования, отсечения областей и различные свойства отрисовки

См. также

_GDIPlus_GraphicsEndContainer

Пример

; 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