Что нового

Рисование графика на фоне изображения (перекрытие элементов ось Z)

cibergod

Новичок
Сообщения
4
Репутация
0
Здравствуйте! Столкнулся с проблемой отображение элементов по оси Z

Вот код примера:

Код:
#include <GUIConstants.au3>

	Opt("GUIOnEventMode", 1)
	
	;создаем gui окно и элименты
	$hGui = GUICreate("",400,400)
	GUISetOnEvent($GUI_EVENT_CLOSE,'_Exit')
	GUISetState()

	_cre_jpg()
	_cre_graf()
	
While 1
	sleep(1000)
WEnd

Func _cre_jpg()
	InetGet ( "http://188.130.251.40/down/update/123.jpg" ,"123.jpg")
	GUICtrlCreatePic("123.jpg",0,0,400,400)
EndFunc

Func _cre_graf()	
	GUICtrlCreateGraphic(0, 0, 400, 400)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 10, 10)
	GUICtrlSetGraphic(-1, $GUI_GR_COLOR,0xff57e9)
	;GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 10)
	GUICtrlSetGraphic(-1, $GUI_GR_LINE, 390, 10)
	GUICtrlSetGraphic(-1, $GUI_GR_LINE, 390, 390)
	GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 390)
	GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 10)
	GUICtrlSetGraphic(-1, $GUI_GR_CLOSE)
	GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
	GUICtrlSetGraphic(-1, $GUI_ONTOP)	
EndFunc

Func _Exit()
    Exit
EndFunc


Как видно, график рисуется ЗА картинкой...

функция
Код:
GUICtrlSetGraphic(-1, $GUI_ONTOP)

не помогает...
Есть варианты как решить проблему?
Спасибо.


Добавлено:
Сообщение автоматически объединено:

http://autoit-script.ru/index.php/topic,11368.0.html

нашел подобную тему, но эту тему удалить не могу
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вот ту я пробовал рисовать на катинке)
http://autoit-script.ru/index.php/topic,11104.0.html
 
Автор
C

cibergod

Новичок
Сообщения
4
Репутация
0
Я понимаю что можно сделать и так
Код:
#include <GUIConstants.au3>
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>

    Opt("GUIOnEventMode", 1)
	
	_gui_create();создаем окно GUI
	_gdi_create()
    _cre_jpg()
    _cre_graf()
    
While 1
    sleep(1000)
WEnd

Func _gdi_create()
    _GDIPlus_Startup ()
    global $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
EndFunc

Func _gui_create()
    global $hGui = GUICreate("",400,400)
    GUISetOnEvent($GUI_EVENT_CLOSE,'_Exit')
    GUISetState()
EndFunc

Func _cre_jpg()
    InetGet ( "http://188.130.251.40/down/update/123.jpg" ,"123.jpg")
    GUICtrlCreatePic("123.jpg",0,0,400,400)
EndFunc

Func _cre_graf()    
	
	local $aPoints[5][2]

	$aPoints[0][0] = 4
    $aPoints[1][0] = 390
    $aPoints[1][1] = 10
    $aPoints[2][0] = 390
    $aPoints[2][1] = 390
    $aPoints[3][0] = 10
    $aPoints[3][1] = 390
	$aPoints[4][0] = 10
    $aPoints[4][1] = 10
    _GDIPlus_GraphicsDrawPolygon ($hGraphic, $aPoints)

	
EndFunc

Func _Exit()
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_Shutdown ()
    Exit
EndFunc

Но я отказался от этого способа по одной причине: "график" пропадет при сворачивании окна... хотя можно добавить событие на обновление "графика" для того что бы он вновь отрисовался.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
cibergod
А рисование динамическое или статичное? Если статичное, то может можно нарисовать прямо на картинке, а потом ее использовать в GUICtrlCreatePic?
 
Автор
C

cibergod

Новичок
Сообщения
4
Репутация
0
Динамическое, рисую на карте зоны(участки, не знаю как назвать), позже буду уже писать редактор этих самых линий
 
Верх