Что нового

Изображение постоянно по центру окна

GUIMish

Знающий
Сообщения
122
Репутация
12
Здравствуйте, у меня окно со стилем "С возможностью менять размер", а как бы мне сделать так, что-бы изображение постоянно было по центру окна, независимо он размера окна.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Да даже если вот так:

Код:
Local $_aOld[2] = [ 0, 0 ], $_aSize
Local $_aImgSize = [ 100 / 2, 100 / 2 ]
While 1
    $_aSize = WinGetClientSize( hGui )
    If ($_aOld[0] <> $_aSize[0] Or $_aOld[1] <> $_aSize[1]) And BitAnd(WinGetState(hGui), 8) Then
        $_aOld = $_aSize

        GUICtrlSetPos( ImgCtrl, ($_aOld[0] / 2) - $_aImgSize[0], ($_aOld[1] / 2) - $_aImgSize[1] )
    EndIf
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
GUIMish,
Например, так.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $hGui, $iW = 350, $iH = 200, $iWl = 100, $nLabel, $iHl = 80

$hGui = GUICreate('Test', $iW, $iH, -1, -1, $WS_OVERLAPPEDWINDOW)
$nLabel = GUICtrlCreateLabel('', Int($iW - $iWl) / 2, Int($iH - $iHl) / 2, $iWl, $iHl)
GUICtrlSetBkColor(-1, 0x0000FF)
GUISetState()

GUIRegisterMsg($WM_SIZE, 'WM_SIZE')

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func WM_SIZE($h_Wnd, $i_Msg, $i_wParam, $i_lParam)
	#forceref $i_Msg, $i_wParam
	Local $i_W, $i_H
	$i_W = BitAND($i_lParam, 0xFFFF)
	$i_H = BitShift($i_lParam, 16)
	GUICtrlSetPos($nLabel, Int($i_W - $iWl) / 2, Int($i_H - $iHl) / 2, $iWl, $iHl)
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_SIZE
 
Верх