Hallo Com,
hier einmal ein Beispiel das zeigt wie man aus den guten Vorlagen der Meister:
- Großvater GuiCtrlPic
- BugFix _AnimButton (ist ins Skript etwas abgeändert integriert)
auf einfache Art und Weise nützliches macht:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include "GUICtrlPic.au3"
Global $aHoverBtn[5][5]
$aHoverBtn[0][1] = @ScriptDir & "\Pictures\Up.png" ;D:\Programme\AutoIt3\MyDemos\Pictures\up.png
$aHoverBtn[0][2] = @ScriptDir & "\Pictures\UpHover.png"
$aHoverBtn[0][3] = @ScriptDir & "\Pictures\UpPress.png"
$aHoverBtn[0][4] = False
$aHoverBtn[1][1] = @ScriptDir & "\Pictures\Down.png"
$aHoverBtn[1][2] = @ScriptDir & "\Pictures\DownHover.png"
$aHoverBtn[1][3] = @ScriptDir & "\Pictures\DownPress.png"
$aHoverBtn[1][4] = False
$aHoverBtn[2][1] = @ScriptDir & "\Pictures\Left.png"
$aHoverBtn[2][2] = @ScriptDir & "\Pictures\LeftHover.png"
$aHoverBtn[2][3] = @ScriptDir & "\Pictures\LeftPress.png"
$aHoverBtn[2][4] = False
$aHoverBtn[3][1] = @ScriptDir & "\Pictures\Right.png"
$aHoverBtn[3][2] = @ScriptDir & "\Pictures\RightHover.png"
$aHoverBtn[3][3] = @ScriptDir & "\Pictures\RightPress.png"
$aHoverBtn[3][4] = False
$aHoverBtn[4][1] = @ScriptDir & "\Pictures\Exit.png"
$aHoverBtn[4][2] = @ScriptDir & "\Pictures\ExitHover.png"
$aHoverBtn[4][3] = @ScriptDir & "\Pictures\ExitPress.png"
$aHoverBtn[4][4] = False
Global $hGui = GUICreate("Hovered Ping-Buttons", 612, 369, 271, 235)
Local $sAutoItPath = StringReplace(@AutoItExe, "autoit3.exe", "")
ConsoleWrite($sAutoItPath & "Examples\GUI\msoobe.jpg" & @CRLF)
Local $Background = _GUICtrlPic_Create($sAutoItPath & "Examples\GUI\msoobe.jpg", 0, 0, 612, 369, $SS_CENTERIMAGE, Default)
GUICtrlSetState(-1, $Gui_DISABLE)
Local $idTorus = _GUICtrlPic_Create($sAutoItPath & "Examples\GUI\Torus.png", 8, 8, 68, 71, $SS_CENTERIMAGE, Default)
GUICtrlSetState(-1, $Gui_DISABLE)
$aHoverBtn[0][0] = _GUICtrlPic_Create($aHoverBtn[0][1], 460, 8, 48, 48, BitOR($SS_CENTERIMAGE, $SS_NOTIFY), Default) ;Up
$aHoverBtn[1][0] = _GUICtrlPic_Create($aHoverBtn[1][1], 460, 138, 48, 48, BitOR($SS_CENTERIMAGE, $SS_NOTIFY), Default) ;Down
$aHoverBtn[2][0] = _GUICtrlPic_Create($aHoverBtn[2][1], 400, 73, 48, 48, BitOR($SS_CENTERIMAGE, $SS_NOTIFY), Default) ;Left
$aHoverBtn[3][0] = _GUICtrlPic_Create($aHoverBtn[3][1], 520, 73, 48, 48, BitOR($SS_CENTERIMAGE, $SS_NOTIFY), Default) ;Right
$aHoverBtn[4][0] = _GUICtrlPic_Create($aHoverBtn[4][1], 540, 266, 48, 48, BitOR($SS_CENTERIMAGE, $SS_NOTIFY), Default) ;Exit
GUISetState()
While 1
#Region ;Hover Or Not?
$Info = GUIGetCursorInfo($hGui)
For $i = 0 To UBound($aHoverBtn) - 1
If $Info[4] = $aHoverBtn[$i][0] Then
If $aHoverBtn[$i][4] Then _GUICtrlPic_SetImage($aHoverBtn[$i][0], $aHoverBtn[$i][2], True)
$aHoverBtn[$i][4] = False
Else
If Not $aHoverBtn[$i][4] Then _GUICtrlPic_SetImage($aHoverBtn[$i][0], $aHoverBtn[$i][1], True)
$aHoverBtn[$i][4] = True
EndIf
Next
#EndRegion
$nMsg = GUIGetMsg()
$aPos = ControlGetPos($hGui, "", $idTorus)
Switch $nMsg
Case $Gui_EVENT_CLOSE
Exit
Case $aHoverBtn[0][0]
If _AnimButton($hGui, $aHoverBtn[0][0], $aHoverBtn[0][1], $aHoverBtn[0][3]) Then $aPos[1] -= 5 ;nach oben
Case $aHoverBtn[1][0]
If _AnimButton($hGui, $aHoverBtn[1][0], $aHoverBtn[1][1], $aHoverBtn[1][3]) Then $aPos[1] += 5 ;nach unten
Case $aHoverBtn[2][0]
If _AnimButton($hGui, $aHoverBtn[2][0], $aHoverBtn[2][1], $aHoverBtn[2][3]) Then $aPos[0] -= 5 ;nach links
Case $aHoverBtn[3][0]
If _AnimButton($hGui, $aHoverBtn[3][0], $aHoverBtn[3][1], $aHoverBtn[3][3]) Then $aPos[0] += 5 ;nach rechts
Case $aHoverBtn[4][0]
If _AnimButton($hGui, $aHoverBtn[4][0], $aHoverBtn[4][1], $aHoverBtn[4][3]) Then Exit
EndSwitch
ControlMove($hGui, "", $idTorus, $aPos[0], $aPos[1])
WEnd
;==================================================================================================
; Function Name: _AnimButton($IDgui, $IDbtn [, $delay=150])
; Description: animiert ein Pic, wie einen geklickten Button
; Parameter(s): $IDgui ID der GUI
; $IDbtn ID des Picture als Button
; $sNormal Pfad zum angezeigten Bild des Buttons im nrmalen Zustand
; $sPress Pfad zum angezeigten Bild des Buttons im gedrückten Zustand
; Author: BugFix
; modified: autoBert
;==================================================================================================
Func _AnimButton($IDgui, $IDbtn, $sNormal = "", $sPress = "")
;ConsoleWrite($IDbtn & @TAB & $sNormal & @TAB & $sPress & @CRLF)
If $IDbtn = 0 Then Return
Local $pos = ControlGetPos($IDgui, '', $IDbtn)
Local $pWin = WinGetPos(GUICtrlGetHandle($IDbtn))
If $sPress <> "" And FileExists($sPress) Then _GUICtrlPic_SetImage($IDbtn, $sPress)
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1] + 1, $pos[2] - 1, $pos[3] - 1)
$return = 1
Do
$x = GUIGetCursorInfo($IDgui)
If $x[4] <> $IDbtn Then $return = 0
Sleep(10)
Until $x[2] = 0
If $sNormal <> "" And FileExists($sNormal) Then _GUICtrlPic_SetImage($IDbtn, $sNormal, True)
ControlMove($IDgui, '', $IDbtn, $pos[0], $pos[1], $pos[2], $pos[3])
Return $return
EndFunc ;==>_AnimButton
dazu benötigt wird die GUICtrlPic.au3 von Grossvater und noch die Bilder im Anhang. Hier solltet ihr aber besser eigene nehmen, aber für dasFunktionsdemo reichen sie,
mfg autoBert