Что нового

[Элементы GUI] рисуем векторные линии поверх текущего окна

Hracid

Новичок
Сообщения
8
Репутация
2
зада следующая: необходимо поверх активного окна рисовать векторные рисунки. причем предельно простые: квадрат, круг, линия. интересует возможность масштабирования и изменения положения нарисованных объектов.
если не сложно подскажите в какую сторону копать, какие инклуды есть в AutoIT для подобных целей?

---------------
сейчас роюсь в GDI. на очереди OpenGL и DirectX.
может кто-то уже сталкивался с подобной задачей и подскажет какие библиотеки использовать...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
#Include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

$hForm = GUICreate('', 200, 200, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
GUISetBkColor(0xABABAB)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 0, $LWA_COLORKEY)
GUIRegisterMsg($WM_PAINT, 'WM_PAINT')
GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
GUISetState(@SW_SHOWNOACTIVATE)

Sleep(1000)
WinMove($hForm, '', 200, 200, 400, 400)
Sleep(1000)
WinMove($hForm, '', 500, 500, 100, 100)

Do
Until GUIGetMsg() = -3

Func _Draw($hWnd)
	Local $hDC = _WinAPI_GetDC($hWnd)
	Local $hPen = _WinAPI_SelectObject($hDC, _WinAPI_CreatePen($PS_SOLID, 1, 0x0000FF))
	Local $hBrush = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($NULL_BRUSH))
	Local $tRect = _WinAPI_GetClientRect($hWnd)
	_WinAPI_Ellipse($hDC, $tRect)
	_WinAPI_DeleteObject(_WinAPI_SelectObject($hDC, $hBrush))
	_WinAPI_DeleteObject(_WinAPI_SelectObject($hDC, $hPen))
	_WinAPI_ReleaseDC($hWnd, $hDC)
EndFunc   ;==>_Draw

Func WM_PAINT($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hForm
			_Draw($hWnd)
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_PAINT

Func WM_SIZE($hWnd, $iMsg, $wParam, $lParam)
	Switch $hWnd
		Case $hForm
			_Draw($hWnd)
			Return 0
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_SIZE
 
Верх