Что нового

[Элементы GUI] Мерцание (мелькание) картинки при плавном перемещении ее в GUI

YOgen

Знающий
Сообщения
58
Репутация
5
Есть ли возможность убрать мерцание (мелькание) картинки при плавном перемещении ее в GUI?

Код:
#Include <GUIConstantsEx.au3>

$Image = @ScriptDir & '\image.bmp'

$GUI = GUICreate ('Pic', 600,400)
	$Pic = GUICtrlCreatePic ($Image, 10,10)
	$Button = GUICtrlCreateButton ('Button', 540,10, 50,30)
GUISetState (@SW_SHOW)

While 1
	$GUI_Msg = GUIGetMsg ()
	Switch $GUI_Msg
		Case $Button
			_Move ()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _Move ()
	For $i = 10 to 100
		GUICtrlSetPos ($Pic, 10,$i)
		Sleep (10)
	Next
EndFunc


Стиль $WS_EX_COMPOSITED не помогает, да и хотелось бы решение для XP и Win7
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#Include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>

$Image = @ScriptDir & '\image.bmp'

$GUI = GUICreate ('Pic', 600,400, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS))
    $Pic = GUICtrlCreatePic ($Image, 10,10)
    $Button = GUICtrlCreateButton ('Button', 540,10, 50,30)
GUISetState (@SW_SHOW)

While 1
    $GUI_Msg = GUIGetMsg ()
    Switch $GUI_Msg
        Case $Button
            _Move ()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _Move ()
    For $i = 10 to 100
        GUICtrlSetPos ($Pic, 10,$i)
        Sleep (10)
    Next
EndFunc
 
Автор
YOgen

YOgen

Знающий
Сообщения
58
Репутация
5
Да уж, все гениальное - просто :smile:
Спасибо большое.


Изначально я взял картинку BMP, а если взять PNG или GIF (нужна прозрачность), то не проходит данный фокус - у изображения исчезает прозрачность.
Можно ли побороть и эту напасть?
 
Верх