tutorial hover buttons!

Antes de ir al Soporte consultame aquí, gracias
Responder
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

tutorial hover buttons!

Mensaje por ms999 »

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

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..
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
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...

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....

Imagen Imagen Imagen

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
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...

Imagen
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: tutorial hover buttons!

Mensaje por Ximorro »

Interesante!

Te propongo una mejora: guardar el estado del botón para no cambiarlo continuamente. Si ya está en "no estamos encima" no tiene que recargar la imagen en cada ciclo (y probablemente serán muchas veces por segundo) mientras no pasemos por encima.
Sería poner una condición en cada cambio de imagen: si ya está esa imagen, no cambiarla.

Así se evitan posibles parpadeos y bastante gasto de CPU.

¡Ese botón redondo iluminado es una pasada! Tengo muchas ganas de ver cómo lo manejas con lo de la transparencia.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder