_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