Page 1 sur 1
CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 19:14
par blendman
Salut la foule en délire
Bon, en ce moment, On est plusieurs à tester les canvas gadget (Coucou Kernadec

).
Mais je me posais la question suivante :
- vaut-il mieux utiliser un canvas ou une image pour dessiner dessus ,
En gros, quels sont les avantages et les inconvénients de l'un et de l'autre, d'après vous ?
Merci pour vos informations.
Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 19:24
par Backup
je ne connais pas les canvas , mais j'utilise les images, et les sprites
jusqu'a maintenant
j'ai crus comprendre que le Canvas a la gestion des evenements souris integré
c'est surement ça qui differe ...

Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 19:33
par blendman
Ouip, mais je trouve que l'un des soucis du canvas c'est qu'il n'est pas transparent.
Alors, du coup, j'utilise des images et je balance tout à la fin sur un canvas, je me demande si c'est utile au final de faire ça

.
Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 19:45
par Backup
blendman a écrit :Ouip, mais je trouve que l'un des soucis du canvas c'est qu'il n'est pas transparent.
Alors, du coup, j'utilise des images et je balance tout à la fin sur un canvas, je me demande si c'est utile au final de faire ça

.
perso je privilegie les Sprites !!
tu peux avoir un sprite de la taille de l'ecran

il peux etre transparent ou pas , (en choisissant meme la couleur que tu veux transparente)
il peut etre "rotatés" déplacés , morcelés (plusieurs sprites peuvent faire une images)
il peuvent etre superposés etc ...
bref l'element graphique ideal pour les bidouilles reste le sprite

Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 20:32
par kernadec
bonsoir
Canvas fonctionne avec DrawAlphaImage
@blendman je viens de mettre à jour le dernier code :
http://www.purebasic.fr/french/viewtopi ... =6&t=11837
pour gérer l'alpha dans le zoom..
Sur le forum allemand Monsieur "Danillo" viens de faire un super boulot avec GDIplus pour les outils dessin ca devrait pouvoir t'aider.
c'est top top....
http://www.purebasic.fr/german/viewtopi ... =8&t=24539
Cordialement
Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 21:32
par Atomo
L'avantage du CanvasGadget est qu'il est double buffered, c'est à dire qu'il n'a pas de problème de scintillement lors du rafraîchissement de l'image.
Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 22:11
par blendman
Dobro a écrit :bref l'element graphique ideal pour les bidouilles reste le sprite

j'aimerai beaucoup utiliser les sprites, car c'est ce que je faisais avec GM, mais le problème c'est qu'avec ma tablette graphique, le curseur part dans tous les sens lorsque je dessine sur un screen..
J'imagine que c'est un bug, car je n'ai pas ça dans GM (sprites et directX)
Otomo : ça, c'est bon à savoir

Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 22:30
par kernadec
bonsoir Atomo
j'ai vu ton topic sur la mouse, Alors comme tu as l'air de bien connaitre le sujet
Depuis 2-3 jours avec le canvas, j'ai constaté un truc étrange avec la Mouse sous Canvas
les coordonnées passent à zéro une fois sur deux, cela me semble pas normal.
comparé au mode WindowMouseX() qui lui ne le fait pas.
Qu'en pense tu.
Cordialement
Code : Tout sélectionner
OpenWindow(0,0, 0,300,300, "test", #WS_SYSMENU )
CanvasGadget(0, 0, 0,300,300,#PB_Canvas_DrawFocus|#PB_Canvas_GrabMouse|#PB_Canvas_Keyboard)
Repeat
Event= WaitWindowEvent()
X = GetGadgetAttribute(0,#PB_Canvas_MouseX)
Y = GetGadgetAttribute(0,#PB_Canvas_MouseY)
Debug "Mouse Canvas = "+Str(X)+":"+Str(Y)+" <<>> Mouse Windows = "+Str(WindowMouseX(0))+":"+Str(WindowMouseY(0))
Until Event= #PB_Event_CloseWindow
Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 22:52
par Atomo
Il faut attendre que le CanvasGadget renvoie un event avant de récupérer la position de la souris, voici le code corrigé :
Code : Tout sélectionner
OpenWindow(0,0, 0,300,300, "test", #WS_SYSMENU )
CanvasGadget(0, 0, 0,300,300,#PB_Canvas_DrawFocus|#PB_Canvas_GrabMouse|#PB_Canvas_Keyboard)
Repeat
Event= WaitWindowEvent(1)
If Event = #PB_Event_Gadget And EventGadget() = 0
X = GetGadgetAttribute(0,#PB_Canvas_MouseX)
Y = GetGadgetAttribute(0,#PB_Canvas_MouseY)
Debug "Mouse Canvas = "+Str(X)+":"+Str(Y)+" <<>> Mouse Windows = "+Str(WindowMouseX(0))+":"+Str(WindowMouseY(0))
EndIf
Until Event= #PB_Event_CloseWindow
Re: CanvasGadget VS imageGadget
Publié : jeu. 07/juil./2011 23:31
par kernadec
merci, Atomo
c'etait écrit dessus GetGadgetAttribute, je le voyais même pas ..
Pfff... eh, bien, j'ai encore du chemin à parcourir...
Cordialement