Что нового

[Элементы GUI] Рисование линий(Line) и прямоугольников(Rect) с помощью GDIplus.au3

Shaman

Знающий
Сообщения
33
Репутация
5
В библиотеке GDIplus.au3 есть функции для рисования линий и прямоугольников:

Код:
_GDIPlus_GraphicsDrawLine($hGraphics, $iX1, $iY1, $iX2, $iY2, $hPen = 0)
_GDIPlus_GraphicsDrawRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $hPen = 0)


Эти функции требуют hadle графического объекта (первый параметр) и handle карандаша (последний параметр).
Как я понимаю, их нужно первоначально создать.
Для создания есть функция
Код:
_GDIPlus_GraphicsCreateFromHWND($hWnd)

Параметр функции - handle окна, возвращаемое значение - handle графического объекта.
Handle окна можно получить с помощью ControlGetHandle.

Вопрос: что делаю неправильно в коде:
Код:
$hWnd = ControlGetHandle("Form1", "", "")
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
_GDIPlus_GraphicsDrawLine($hGraphics, 0, 0, 10, 10, 0)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>

$hGUI = GUICreate("", 400, 300)
GUISetState()


_GDIPlus_Startup ()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
$hPen = _GDIPlus_PenCreate ()
_GDIPlus_GraphicsDrawLine ($hGraphic, 10, 150, 390, 150, $hPen)

While 1
	_GDIPlus_GraphicsDrawLine ($hGraphic, 10, 150, 390, 150, $hPen)
    $hMsg =  GUIGetMsg()
    If $hMsg = $GUI_EVENT_CLOSE Then 
		_GDIPlus_PenDispose ($hPen)
		_GDIPlus_GraphicsDispose ($hGraphic)
		_GDIPlus_Shutdown ()
		Exit
	EndIf
WEnd
 
Верх