Et bien devinez quoi ?, et bien non, il sont TOUS DIFFERENT !!!
La question qui tue, c'est POURQUOI ?!
Que ce soit dans une boucle dans un StartVectorDrawing() et EndVectorDrawing()
Ou alors chacun dessiné séparément ou chacun à sont propre bloc StartVectorDrawing() et EndVectorDrawing()
Et bien ça change rien, ok, les deux font la même chose, mais alors pourquoi il sont différents ?
Le graphique du dégradé devrait être strictement identique pour tous les boutons, mais chose incroyable, NON !
POURQUOI ?!
Code : Tout sélectionner
;{ Enumération des Gadgets du programme à partir de 1.
Enumeration 1
#Window
#CanvasGadget
EndEnumeration
;}
; Structure pour les boutons sur le canevas.
Structure Boutons
X.i
Y.i
Largeur.i
Hauteur.i
Texte.s
MouseOver.b
MouseClick.b
EndStructure
Global Dim MesBoutons.Boutons(3) ; 4 Boutons
; Procédure qui contient des fonctions pour dessiner les boutons quand la souris est pas sur un bouton.
Procedure ButtonNormal(X.i, Y.i, Width.i, Height.i, Texte$)
AddPathBox(X.i + 5, Y.i + 5, Width.i - 10, Height.i - 10)
VectorSourceColor(RGBA(150, 150, 150, 255))
StrokePath(10, #PB_Path_RoundCorner)
AddPathBox(X.i + 6, Y.i + 6, Width.i - 12, Height.i - 12)
VectorSourceColor(RGBA(200, 200, 200, 255))
StrokePath(10, #PB_Path_RoundCorner)
VectorSourceLinearGradient(0, 0, 0, Height.i)
VectorSourceGradientColor(RGBA(200, 200, 200, 255), 0.0)
VectorSourceGradientColor(RGBA(230, 230, 230, 255), 0.50)
VectorSourceGradientColor(RGBA(230, 230, 230, 255), 0.50)
VectorSourceGradientColor(RGBA(200, 200, 200, 255), 1)
AddPathBox(X.i + 2, Y.i + 2, Width.i - 4, Height.i - 4)
FillPath()
EndProcedure
; Création d'une fenêtre.
If OpenWindow(#Window, 0, 0, 800, 600, "Exemple VectorDrawing...", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
WindowBounds(#Window, 800, 600, #PB_Ignore, #PB_Ignore) ; Dimensions Minimales et Maximales par défaut de la Fenêtre.
; Création d'un Canevas gadget.
CanvasGadget(#CanvasGadget, 0, 0, 800, 600, #PB_Canvas_Keyboard)
; Largeur et Hauteur des boutons.
MesBoutons.Boutons(0)\Largeur = 200
MesBoutons.Boutons(0)\Hauteur = 50
MesBoutons.Boutons(1)\Largeur = 200
MesBoutons.Boutons(1)\Hauteur = 50
MesBoutons.Boutons(2)\Largeur = 200
MesBoutons.Boutons(2)\Hauteur = 50
MesBoutons.Boutons(3)\Largeur = 200
MesBoutons.Boutons(3)\Hauteur = 50
; Positionne les boutons pour les centrer sur le canevas.
MesBoutons.Boutons(0)\X = ((GadgetWidth(#CanvasGadget) - MesBoutons.Boutons(0)\Largeur)) / 2
MesBoutons.Boutons(0)\Y = (GadgetHeight(#CanvasGadget) - (MesBoutons.Boutons(0)\Hauteur + 5 + MesBoutons.Boutons(1)\Hauteur + 5 + MesBoutons.Boutons(2)\Hauteur + 5 + MesBoutons.Boutons(3)\Hauteur + 5)) / 2
MesBoutons.Boutons(1)\X = ((GadgetWidth(#CanvasGadget) - MesBoutons.Boutons(1)\Largeur)) / 2
MesBoutons.Boutons(1)\Y = MesBoutons.Boutons(0)\Y + MesBoutons.Boutons(0)\Hauteur + 5
MesBoutons.Boutons(2)\X = ((GadgetWidth(#CanvasGadget) - MesBoutons.Boutons(2)\Largeur)) / 2
MesBoutons.Boutons(2)\Y = MesBoutons.Boutons(1)\Y + MesBoutons.Boutons(1)\Hauteur + 5
MesBoutons.Boutons(3)\X = ((GadgetWidth(#CanvasGadget) - MesBoutons.Boutons(3)\Largeur)) / 2
MesBoutons.Boutons(3)\Y = MesBoutons.Boutons(2)\Y + MesBoutons.Boutons(2)\Hauteur + 5
StartVectorDrawing(CanvasVectorOutput(#CanvasGadget))
For Buttons.i = 0 To 3
ButtonNormal(MesBoutons.Boutons(Buttons.i)\X, MesBoutons.Boutons(Buttons.i)\Y, MesBoutons.Boutons(Buttons.i)\Largeur, MesBoutons.Boutons(Buttons.i)\Hauteur, MesBoutons.Boutons(Buttons.i)\Texte)
Next
StopVectorDrawing()
; StartVectorDrawing(CanvasVectorOutput(#CanvasGadget))
; ButtonNormal(MesBoutons.Boutons(0)\X, MesBoutons.Boutons(0)\Y, MesBoutons.Boutons(0)\Largeur, MesBoutons.Boutons(0)\Hauteur, MesBoutons.Boutons(0)\Texte)
; StopVectorDrawing()
;
; StartVectorDrawing(CanvasVectorOutput(#CanvasGadget))
; ButtonNormal(MesBoutons.Boutons(1)\X, MesBoutons.Boutons(1)\Y, MesBoutons.Boutons(1)\Largeur, MesBoutons.Boutons(1)\Hauteur, MesBoutons.Boutons(1)\Texte)
; StopVectorDrawing()
;
; StartVectorDrawing(CanvasVectorOutput(#CanvasGadget))
; ButtonNormal(MesBoutons.Boutons(2)\X, MesBoutons.Boutons(2)\Y, MesBoutons.Boutons(2)\Largeur, MesBoutons.Boutons(2)\Hauteur, MesBoutons.Boutons(2)\Texte)
; StopVectorDrawing()
;
; StartVectorDrawing(CanvasVectorOutput(#CanvasGadget))
; ButtonNormal(MesBoutons.Boutons(3)\X, MesBoutons.Boutons(3)\Y, MesBoutons.Boutons(3)\Largeur, MesBoutons.Boutons(3)\Hauteur, MesBoutons.Boutons(3)\Texte)
; StopVectorDrawing()
; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;{ Événements de la fenêtre.
Repeat ; Départ des évènements de boucle.
Select WaitWindowEvent(1) ; Cette ligne attend pendant (Minuteur) qu'un évènement soit reçu par la Fenêtre.
Case #PB_Event_Gadget ; Un évènement s'est passé sur un gadget.
Select EventGadget() ; Pour savoir sur quel gadget s'est produit l'évènement.
Case #CanvasGadget
EndSelect
Case #PB_Event_SizeWindow ; La fenêtre a été redimensionné.
Case #PB_Event_CloseWindow ; L'icône de fermeture de la fenêtre a été cliquée.
End
EndSelect
ForEver
EndIf
;}
https://drive.google.com/file/d/1DHjsIY ... sp=sharing