mouse over

Samy-Deluxe

Erfahrenes Mitglied
Ich brauche hilfe. Ich habe Purebasic, nicht visual basic, aber trotzdem frage ich hier

Also, wenn man über ein Bild geht, soll ein anderes Bild angezeigt werden.

Bisher kenne ich selbst das bei javascirpt und CSS, Bei Purebasic müsste das eigentlich gehen
Code:
ImageGadget(0, 0, 0, 44, 44, LoadImage(1, "file/exit.jpg"))

normales bild


wie weiter?
 
Servus,

Das geht nicht einfach nur mit ein oder zwei Imagegadgets.
Dazu bedarf es einer Ereignischleife und einigem Code mehr.

Code:
Define.POINT Mouse
Define.LONG  *Hwnd
Define.LONG  *hImageControl
Define.LONG  *MyImage_Hovered
Define.LONG  *MyImage_Normal



*Hwnd= OpenWindow (#PB_Any , #PB_Ignore , #PB_Ignore , 800 , 300 , "Mouseover" , #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If Not *Hwnd
   MessageRequester ("Fehler" , "Fenster konnte nicht erstellt werden." , #MB_OK|#MB_ICONERROR)
   End 0
EndIf

If CreateGadgetList (*Hwnd\l) = #False
   MessageRequester ("Fehler" , "Auf diesem Fenster können keine Controls erstellt werden." , #MB_OK|#MB_ICONERROR)
   End 0
EndIf

*MyImage_Normal  = CreateImage (#PB_Any , 600, 100)
If StartDrawing (ImageOutput (*MyImage_Normal))
   Box (0 , 0 , 800 , 100 , $0000FF)
   StopDrawing ()
EndIf
*MyImage_Hovered = CreateImage (#PB_Any , 600, 100)
If StartDrawing (ImageOutput (*MyImage_Hovered))
   Box (0 , 0 , 800 , 100 , $00FF00)
   StopDrawing ()
EndIf

*hImageControl = ImageGadget (#PB_Any , 100 , 100 , 600 , 100 , *MyImage_Normal\l)

Repeat
  Event.l = WaitWindowEvent ()
  Select Event.l
    Case #PB_Event_CloseWindow
    End 0
    Case #WM_MOUSEMOVE
    GetCursorPos_(Mouse)
    Mouse\x - WindowX (*Hwnd)
    Mouse\y - WindowY (*Hwnd)
    If ChildWindowFromPoint_(*Hwnd\l , Mouse\x , Mouse\y) = *hImageControl\l
       SetGadgetState (*hImageControl , *MyImage_Hovered\l)
       Else
       SetGadgetState (*hImageControl , *MyImage_Normal\l)
    EndIf
  EndSelect 
ForEver

MfG

Wolf


PS: Mir ist bewusst dass der Thread schon alt ist. Aber beantwortet hilft er mehr. Vieleicht kommt ja noch ein anderer mit der Frage.
 
Zuletzt bearbeitet:
Zurück