tutorial hover buttons!
Publicado: 26 Abr 2011, 08:59
Estoy posteando en muchos foros asi que quiza esto lo vean en otros lados...
Bueno he visto por muchas sitios de internet que quieren hacer botones que cambien de imagen o texto cuando el mouse pasa sobre ellos y luego cambian otra vez al hacer click.. hay UDF en el foro de autoit pero super complicadas... lo que yo propongo es mucho mas sencillo y no necesitas instalar nada
Creas una GUI con una PIC
Ahora en el while le vamos a poner la funcion GUIGetCursorInfo() y que la guarde en una variable... aqui usaremos $amouse
Si vemos la ayuda de esa funcion nos dira que... "Obtiene la posición del cursor relativo a una ventana GUI."
Y mas abajo nos dice que nos devuelve un arreglo..
IMPORTANTE: Tambien saber que error nos puede tirar para poner una respuesta frente a ese error sino la aplicacion crashea o funciona mal! :S
Tambien les dejo las imágenes del boton este que use. copienlas en la carpeta del script o pongan las suyas propias....

Bueno las verdaderas condiciones que les pusimos en el Select, case serian...
en el caso de que el mouse no esta encima del pic, ponga una imagen(la gris)
en el caso de que el mouse esta encima de la pic y el botón izquierdo del el esta presionado que cambie(verde)
en el caso de que el mouse esta encima de la pic y el boton no está presionado que cambie(amarillo)
Listo :) sencillo y facil !
mas adelante les pondré una manera de poner imágenes con semi transparencias y también fondo totalmente transparente.. hay una manera con una función que esta dando vueltas _setbitmap() pero creo que se puede hacer de una manera propia y entenderla... esta que ven a continuacion la hice con _setbitmap() y el boton de ahi se prende y apaga con efectos de luz bastante interezantes...

Bueno he visto por muchas sitios de internet que quieren hacer botones que cambien de imagen o texto cuando el mouse pasa sobre ellos y luego cambian otra vez al hacer click.. hay UDF en el foro de autoit pero super complicadas... lo que yo propongo es mucho mas sencillo y no necesitas instalar nada
Creas una GUI con una PIC
Código: Seleccionar todo
$Bnbmp1 = @ScriptDir & "\botona.bmp"
$Bnbmp2 = @ScriptDir & "\botonb.bmp"
$Bnbmp3 = @ScriptDir & "\botonc.bmp"
$gui = GUICreate("Prueba para el boton", -1, -1, -1, -1)
GUISetBkColor(0xE0FFFF)
$pic = GUICtrlCreatePic($Bnbmp1,200,200,100,100)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Ahora en el while le vamos a poner la funcion GUIGetCursorInfo() y que la guarde en una variable... aqui usaremos $amouse
Si vemos la ayuda de esa funcion nos dira que... "Obtiene la posición del cursor relativo a una ventana GUI."
Y mas abajo nos dice que nos devuelve un arreglo..
entonces arreglamos el code para que cuando el mouse pase encima del pic el pic cambie de imagen y otro para que cuando hagamos click en el pic, cambie a otra imagen mas...Con Éxitos devuelve un arreglo de 5 elementos conteniendo información del puntero del ratón:
$arreglo[0] = X coordenadas (horizontal)
$arreglo[1] = Y coordenadas (vertical)
$arreglo[2] = Botón primario oprimido (1 si es presionado, 0 si no es presionado)
$arreglo[3] = Botón secundario oprimido (1 si es presionado, 0 si no es presionado)
$arreglo[4] = ID del control sobre el cual el puntero es movido (o 0 si no es el caso)
Al Fallar 0 y fija @error a 1
IMPORTANTE: Tambien saber que error nos puede tirar para poner una respuesta frente a ese error sino la aplicacion crashea o funciona mal! :S
Tambien les dejo las imágenes del boton este que use. copienlas en la carpeta del script o pongan las suyas propias....



Código: Seleccionar todo
$Bnbmp1 = @ScriptDir & "\bot1.bmp"
$Bnbmp2 = @ScriptDir & "\bot2.bmp"
$Bnbmp3 = @ScriptDir & "\bot3.bmp"
$gui = GUICreate("Prueba para el boton", -1, -1, -1, -1)
GUISetBkColor(0xE0FFFF)
$pic = GUICtrlCreatePic($Bnbmp1, 150, 150, 100,100)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
$amouse = GUIGetCursorInfo()
If @error = 1 Then ContinueLoop
Select
Case Not $amouse[4] = $pic
GUICtrlSetImage($pic, $Bnbmp1)
case $amouse[2] = 1 and $amouse[4] = $pic
GUICtrlSetImage($pic, $Bnbmp3)
case $amouse[2] = 0 and $amouse[4] = $pic
GUICtrlSetImage($pic, $Bnbmp2)
EndSelect
WEnd
en el caso de que el mouse no esta encima del pic, ponga una imagen(la gris)
en el caso de que el mouse esta encima de la pic y el botón izquierdo del el esta presionado que cambie(verde)
en el caso de que el mouse esta encima de la pic y el boton no está presionado que cambie(amarillo)
Listo :) sencillo y facil !
mas adelante les pondré una manera de poner imágenes con semi transparencias y también fondo totalmente transparente.. hay una manera con una función que esta dando vueltas _setbitmap() pero creo que se puede hacer de una manera propia y entenderla... esta que ven a continuacion la hice con _setbitmap() y el boton de ahi se prende y apaga con efectos de luz bastante interezantes...
