[Resolu] Canvas et transition sur un MouseOver

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

[Resolu] Canvas et transition sur un MouseOver

Message par Ar-S »

Bonjour,

Je suis en train de me faire une menubar en canvas, en gros j'ai un canvas de 160 x 40

3 images de 40x40 pour mes boutons
3 images bis de 40x40 pour changer les boutons lorsque la souris les survole.

J'affiche donc mon canvas et mes 3 images et lorsque je passe ma souris dessus j'ai bien la nouvelle image qui apparait.

Je dessine la nouvelle image ainsi

Code : Tout sélectionner

DrawAlphaImage(ImageID(#IMG_NB2),position,0,255)
J'aimerai que cette nouvelle image apparaisse progressivement en jouant sur la transparence.
J'ai donc modifié la ligne ci dessus comme ceci.

Code : Tout sélectionner

For i = 0 To 254
     DrawAlphaImage(ImageID(#IMG_NB2),position,0,i)
Next
Mais aucune transition ne s'effectue, ça passe de l'image 1 à 2 d'un coup (ou alors ça va trop vite pour être perçu).

Il me semble qu'un code permettait cela mais je ne le retrouve pas.
Si quelqu'un à une solution pas trop tordue je suis preneur. :P
Dernière modification par Ar-S le sam. 23/févr./2013 18:00, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
wood51
Messages : 122
Inscription : ven. 05/juin/2009 13:04
Localisation : orléans

Re: Canvas et transition sur un MouseOver

Message par wood51 »

Peut être avec un timer ... ?
Compétences : Bricoleur PureBasic du dimanche
Crâmage de cerveau en cours 100% :D
Projet en cours : http://purepicbasic.frenchboard.com/
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Canvas et transition sur un MouseOver

Message par Ar-S »

C'est le mot que je ne voulais pas vraiment voir apparaitre 8)
J'aurai du préciser.
y'aurait il une autre ruse
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Canvas et transition sur un MouseOver

Message par Backup »

lorsque tu fais :

Code : Tout sélectionner

 For i = 0 To 254
     DrawAlphaImage(ImageID(#IMG_NB2),position,0,i)
Next 
il te faut Actualiser ton Gadget dans la boucle , pour pouvoir voir l'effet :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Canvas et transition sur un MouseOver

Message par Ar-S »

Mon gadget est forcement actif vu que le traitement se fait pendant le

Code : Tout sélectionner

StartDrawing(CanvasOutput(#CANVAS_TOOLBAR))  : (....)  : stopdrawing()
lors d'un mousemouve sur le #CANVAS_TOOLBAR.

Ne penses tu pas ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Canvas et transition sur un MouseOver

Message par graph100 »

non, dobro a raison.

Mais la raison principale est que tu ne traite pas le problème de la bonne façon.
Dans ce que tu fais actuellement, tu bloques tout ton code le temps de faire apparaitre ton image...
Donc, même si tu ajoutes un delay(), ça ne résoudra pas ton soucis.

Il me semble qu'une façon de faire est d'utiliser ElapsedMilliseconds(), et un timer pour actualiser ton dessin.
Si tu ne mets de pas de timer, ton dessin s'actualisera chaque fois qu'un évènement sera renvoyé par waitwindowevent(), et le problème c'est que si tu bouge la souris, il y a un évènement à chaque boucle, et au contraire, si tu ne fais plus rien, aucun évènement ne sera la pour actualiser le dessin.

Le timer va donc générer artificiellement un évènement régulier pour l'actualisation de ton gadget.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Canvas et transition sur un MouseOver

Message par graph100 »

un petit exemple, il faut bien sur adapter le code pour qu'il rapidement ajoutable avec tes menubar.

Un truc intéressant, le numéro d'un timer peut être négatif ! Mais pas grand monde doit les utiliser ;)

Code : Tout sélectionner

OpenWindow(0, 0, 0, 400, 500, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)


CanvasGadget(0, 10, 10, 380, 480)


CreateImage(1, 50, 50)
StartDrawing(ImageOutput(1))
	Box(0, 0, 50, 50, #Red)
StopDrawing()

CreateImage(2, 50, 50)
StartDrawing(ImageOutput(2))
	Box(0, 0, 50, 50, #Blue)
StopDrawing()



AddWindowTimer(0, 1, 50)
Temps_debut = ElapsedMilliseconds()
Duree_animation = 500 ; ms

Image_base = 1


Repeat
	event = WaitWindowEvent()
	
	If event = #PB_Event_Timer
		i.d = 255 * (ElapsedMilliseconds()-Temps_debut) / Duree_animation
		
		StartDrawing(CanvasOutput(0))
			
			If Image_base = 1
				If i >= 255 : i = 255 : Image_base = 2 : Temps_debut = ElapsedMilliseconds() : EndIf
				DrawImage(ImageID(1), 100, 100)
				
				DrawAlphaImage(ImageID(2), 100, 100, i)
			Else
				If i >= 255 : i = 255 : Image_base = 1 : Temps_debut = ElapsedMilliseconds() : EndIf
				
				DrawImage(ImageID(2), 100, 100)
				DrawAlphaImage(ImageID(1), 100, 100, i)
			EndIf
			
		StopDrawing()
	EndIf
	
Until event = #PB_Event_CloseWindow

End
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Canvas et transition sur un MouseOver

Message par Ar-S »

Merci graph100 pour cet exemple.
Je ne vais cependant pas gérer la transition au survol, trop superflux pour que j'y consacre du temps (surtout trop d'autres choses à faire).

J'avais peur que le timer soit indispensable, vous avez confirmé ma crainte.

Merci de m'avoir répondu en tout cas.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre