Page 1 sur 2

VectorCustomButton

Publié : ven. 31/juil./2020 2:19
par Shadow
Salut, je me suis cassé les dents sur ce petit programme pour créer des Boutons (Pas d’Événements, c'est juste des Images !) avec la librairie VectorDrawing :)
Voici le code:

Code : Tout sélectionner

; VectorCustomButton créé par Mr Dieppedalle David le 31/07/2020.
; Version: 1.01.00

; Version: 1.02.00 le 31/07/2020.
; Correction diverse, ajout de code, maintenant il est possible de créer de petit bouton si l'arrondis du bouton est petit, de créer des boutons carré, de personnaliser le type de bordure parmis 3 choix.

Procedure VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$ = "", TextHeight.i = 16, TextColord.q = 18446744073692774400, TextFont.i = 0, BorderType.i = #PB_Path_Default, BorderColord.q = 18446744073702643350, BorderInsideType.i = #PB_Path_Default, InsideGradientColord1.q = 18446744073707906790, InsideGradientColord2.q = 18446744073705933000, BorderRound.i = 10, InsidePositionOffSet.i = 0, InsideRoundOffSet.i = 0)
  
  If Width.i < 1
    Width.i = 1
  EndIf
  
  If Height.i < 1
    Height.i = 1
  EndIf
  
  If BorderRound.i < = 0
    BorderRound.i = 1
  EndIf
  
  AddPathBox(X.i + (BorderRound.i / 2), Y.i + (BorderRound.i / 2), Width.i - BorderRound.i, Height.i - BorderRound.i)
  VectorSourceColor(BorderColord.q)
  FillPath()
  
  AddPathBox(X.i + (BorderRound.i / 2), Y.i + (BorderRound.i / 2), Width.i - BorderRound.i, Height.i - BorderRound.i)
  VectorSourceColor(BorderColord.q)
  StrokePath(BorderRound.i, BorderType.i)
  
  VectorSourceLinearGradient(0, Height.i, 0, 0)
  VectorSourceGradientColor(InsideGradientColord1.q, 0.0)
  VectorSourceGradientColor(InsideGradientColord2.q, 0.50)
  VectorSourceGradientColor(InsideGradientColord1.q, 1)
  
  AddPathBox(X.i + Width.i / 4, Y.i + Height.i / 4, Width.i - (Width.i / 2), Height.i - (Height.i / 2))
  FillPath()

  VectorSourceLinearGradient(0, Height.i, 0, 0)
  VectorSourceGradientColor(InsideGradientColord1.q, 0.0)
  VectorSourceGradientColor(InsideGradientColord2.q, 0.50)
  VectorSourceGradientColor(InsideGradientColord1.q, 1)
  
  AddPathBox(1 + X.i + (BorderRound.i / 2) + InsidePositionOffSet.i + (InsideRoundOffSet.i / 2), 1 + Y.i + (BorderRound.i / 2) + InsidePositionOffSet.i + (InsideRoundOffSet.i / 2), Width.i - BorderRound.i - 2 - (InsidePositionOffSet.i * 2) - InsideRoundOffSet.i, Height.i - BorderRound.i - 2 - (InsidePositionOffSet.i * 2) - InsideRoundOffSet.i)
  
  If BorderRound.i + InsideRoundOffSet.i > 0
    StrokePath(BorderRound.i + InsideRoundOffSet.i, BorderInsideType.i)
  Else
    StrokePath(1, BorderInsideType.i)
  EndIf
  
  AddPathBox(1 + X.i + (BorderRound.i / 2) + InsidePositionOffSet.i + (InsideRoundOffSet.i / 2), 1 + Y.i + (BorderRound.i / 2) + InsidePositionOffSet.i + (InsideRoundOffSet.i / 2), Width.i - BorderRound.i - 2 - (InsidePositionOffSet.i * 2) - InsideRoundOffSet.i, Height.i - BorderRound.i - 2 - (InsidePositionOffSet.i * 2) - InsideRoundOffSet.i)
  
  VectorSourceLinearGradient(0, Height.i, 0, 0)
  VectorSourceGradientColor(InsideGradientColord1.q, 0.0)
  VectorSourceGradientColor(InsideGradientColord2.q, 0.50)
  VectorSourceGradientColor(InsideGradientColord1.q, 1)
  FillPath()
  
  If TextHeight.i <= 0
    TextHeight.i = 16
  EndIf
  
  If Not IsFont(TextFont.i)
    TextFont.i = LoadFont(#PB_Any, "", TextHeight.i, #PB_Font_HighQuality)
  EndIf
  
  VectorFont(FontID(TextFont.i), TextHeight.i)
  MovePathCursor(X.i + (Width.i - VectorTextWidth(Text$)) / 2, Y.i + (Height.i - VectorTextHeight(Text$)) / 2)
  AddPathText(Text$)
  VectorSourceColor(TextColord.q)
  FillPath()
  
EndProcedure

; Exemple:
If OpenWindow(0, 0, 0, 800, 600, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CanvasGadget(0, 0, 0, 800, 600)
  
  LoadFont(0, "Times New Roman", 10, #PB_Font_Bold | #PB_Font_HighQuality)
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorSourceColor(RGBA(220, 220, 220, 255))
    AddPathBox(0, 0, 800, 600)
    FillPath()
    StopVectorDrawing()
  EndIf
  
  ; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  X.i = 25 ; Position X du Bouton.
  Y.i = 25 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 175; Hauteur du Bouton.
  BorderType.i = #PB_Path_Default ; Le type de bordure du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  BorderRound.i = 125 ; Taille des coins arrondis du Bouton (Attention, ne devraie pas être plus grand que Height.i - 25 pour un affichage correcte, sans effet si le type de la bordure est defaut.
  InsidePositionOffSet.i = 0 ; Position d'ajustement du dégradé à l'intérieur du Bouton, par defaut se situe à +1 pixel après la bordure du Bouton, une valeur positive éloigne et diminue le dégradé intérieur du Bouton, une valeur négative raproche et agrandis le dégradé intérieur du bouton.
  InsideRoundOffSet.i = 0   ; Ajuste la taille des coins arrondis du dégradé à l'interieur du Bouton, par defaut est égale à BorderRound.i, une valeur positive augmente la taille des coins arrondis du dégradé à l'interieur du Bouton, une valeur négative diminue la taille des coins arrondis du dégradé à l'interieur du Bouton, sans effet si le type de la bordure est defaut.
  BorderColord.q = RGBA(150, 150, 150, 255) ; Couleur de la bordure du Bouton.
  BorderInsideType.i = #PB_Path_Default ; Le type de bordure interieur du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  InsideGradientColord1.q = RGBA(254, 241, 201, 255) ; Couleur n°1 du dégradé du Bouton.
  InsideGradientColord2.q = RGBA(254, 227, 143, 255) ; Couleur n°2 du dégradé du Bouton.
  TextColord.q = RGBA(0, 125, 0, 255)                ; Couleur du Texte du Bouton.
  TextHeight.i = 24                                  ; Taille du Texte du Bouton.
  Text$ = "Mon Bouton"                               ; Texte du Bouton.
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf
  
  ; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  X.i = 300 ; Position X du Bouton.
  Y.i = 25 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 175; Hauteur du Bouton.
  BorderType.i = #PB_Path_RoundCorner ; Le type de bordure du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  BorderRound.i = 175 ; Taille des coins arrondis du Bouton (Attention, ne devraie pas être plus grand que Height.i - 25 pour un affichage correcte, sans effet si le type de la bordure est defaut.
  InsidePositionOffSet.i = 15 ; Position d'ajustement du dégradé à l'intérieur du Bouton, par defaut se situe à +1 pixel après la bordure du Bouton, une valeur positive éloigne et diminue le dégradé intérieur du Bouton, une valeur négative raproche et agrandis le dégradé intérieur du bouton.
  InsideRoundOffSet.i = -75   ; Ajuste la taille des coins arrondis du dégradé à l'interieur du Bouton, par defaut est égale à BorderRound.i, une valeur positive augmente la taille des coins arrondis du dégradé à l'interieur du Bouton, une valeur négative diminue la taille des coins arrondis du dégradé à l'interieur du Bouton, sans effet si le type de la bordure est defaut.
  BorderColord.q = RGBA(0, 0, 200, 255) ; Couleur de la bordure du Bouton.
  BorderInsideType.i = #PB_Path_DiagonalCorner ; Le type de bordure interieur du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  InsideGradientColord1.q = RGBA(200, 200, 200, 255) ; Couleur n°1 du dégradé du Bouton.
  InsideGradientColord2.q = RGBA(230, 230, 230, 255) ; Couleur n°2 du dégradé du Bouton.
  TextColord.q = RGBA(255, 0, 0, 255)                ; Couleur du Texte du Bouton.
  TextHeight.i = 24                                  ; Taille du Texte du Bouton.
  Text$ = "Mon Bouton"                               ; Texte du Bouton.
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf

  ; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  X.i = 25 ; Position X du Bouton.
  Y.i = 225 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 175; Hauteur du Bouton.
  BorderType.i = #PB_Path_Default ; Le type de bordure du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  BorderRound.i = 50 ; Taille des coins arrondis du Bouton (Attention, ne devraie pas être plus grand que Height.i - 25 pour un affichage correcte, sans effet si le type de la bordure est defaut.
  InsidePositionOffSet.i = 0 ; Position d'ajustement du dégradé à l'intérieur du Bouton, par defaut se situe à +1 pixel après la bordure du Bouton, une valeur positive éloigne et diminue le dégradé intérieur du Bouton, une valeur négative raproche et agrandis le dégradé intérieur du bouton.
  InsideRoundOffSet.i = 75   ; Ajuste la taille des coins arrondis du dégradé à l'interieur du Bouton, par defaut est égale à BorderRound.i, une valeur positive augmente la taille des coins arrondis du dégradé à l'interieur du Bouton, une valeur négative diminue la taille des coins arrondis du dégradé à l'interieur du Bouton, sans effet si le type de la bordure est defaut.
  BorderColord.q = RGBA(225, 0, 0, 255) ; Couleur de la bordure du Bouton.
  BorderInsideType.i = #PB_Path_DiagonalCorner ; Le type de bordure interieur du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  InsideGradientColord1.q = RGBA(200, 200, 200, 255) ; Couleur n°1 du dégradé du Bouton.
  InsideGradientColord2.q = RGBA(230, 230, 230, 255) ; Couleur n°2 du dégradé du Bouton.
  TextColord.q = RGBA(255, 175, 0, 255)                ; Couleur du Texte du Bouton.
  TextHeight.i = 24                                  ; Taille du Texte du Bouton.
  Text$ = "Mon Bouton"                               ; Texte du Bouton.
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf

  ; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  X.i = 300 ; Position X du Bouton.
  Y.i = 225 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 175; Hauteur du Bouton.
  BorderType.i = #PB_Path_RoundCorner ; Le type de bordure du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  BorderRound.i = 150 ; Taille des coins arrondis du Bouton (Attention, ne devraie pas être plus grand que Height.i - 25 pour un affichage correcte, sans effet si le type de la bordure est defaut.
  InsidePositionOffSet.i = 10 ; Position d'ajustement du dégradé à l'intérieur du Bouton, par defaut se situe à +1 pixel après la bordure du Bouton, une valeur positive éloigne et diminue le dégradé intérieur du Bouton, une valeur négative raproche et agrandis le dégradé intérieur du bouton.
  InsideRoundOffSet.i = -22   ; Ajuste la taille des coins arrondis du dégradé à l'interieur du Bouton, par defaut est égale à BorderRound.i, une valeur positive augmente la taille des coins arrondis du dégradé à l'interieur du Bouton, une valeur négative diminue la taille des coins arrondis du dégradé à l'interieur du Bouton, sans effet si le type de la bordure est defaut.
  BorderColord.q = RGBA(0, 150, 0, 255) ; Couleur de la bordure du Bouton.
  BorderInsideType.i = #PB_Path_RoundCorner ; Le type de bordure interieur du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  InsideGradientColord1.q = RGBA(254, 241, 201, 255) ; Couleur n°1 du dégradé du Bouton.
  InsideGradientColord2.q = RGBA(254, 227, 143, 255) ; Couleur n°2 du dégradé du Bouton.
  TextColord.q = RGBA(0, 0, 200, 255)                ; Couleur du Texte du Bouton.
  TextHeight.i = 24                                  ; Taille du Texte du Bouton.
  Text$ = "Mon Bouton"                               ; Texte du Bouton.
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf

  ; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  X.i = 25 ; Position X du Bouton.
  Y.i = 435 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 125; Hauteur du Bouton.
  BorderType.i = #PB_Path_RoundCorner ; Le type de bordure du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  BorderRound.i = 125 ; Taille des coins arrondis du Bouton (Attention, ne devraie pas être plus grand que Height.i - 25 pour un affichage correcte, sans effet si le type de la bordure est defaut.
  InsidePositionOffSet.i = 10 ; Position d'ajustement du dégradé à l'intérieur du Bouton, par defaut se situe à +1 pixel après la bordure du Bouton, une valeur positive éloigne et diminue le dégradé intérieur du Bouton, une valeur négative raproche et agrandis le dégradé intérieur du bouton.
  InsideRoundOffSet.i = 0   ; Ajuste la taille des coins arrondis du dégradé à l'interieur du Bouton, par defaut est égale à BorderRound.i, une valeur positive augmente la taille des coins arrondis du dégradé à l'interieur du Bouton, une valeur négative diminue la taille des coins arrondis du dégradé à l'interieur du Bouton, sans effet si le type de la bordure est defaut.
  BorderColord.q = RGBA(150, 150, 150, 255) ; Couleur de la bordure du Bouton.
  BorderInsideType.i = #PB_Path_RoundCorner ; Le type de bordure interieur du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  InsideGradientColord1.q = RGBA(254, 241, 201, 255) ; Couleur n°1 du dégradé du Bouton.
  InsideGradientColord2.q = RGBA(254, 227, 143, 255) ; Couleur n°2 du dégradé du Bouton.
  TextColord.q = RGBA(0, 125, 0, 255)                ; Couleur du Texte du Bouton.
  TextHeight.i = 24                                  ; Taille du Texte du Bouton.
  Text$ = "Mon Bouton"                               ; Texte du Bouton.
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf

  ; -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  X.i = 300 ; Position X du Bouton.
  Y.i = 447 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 100; Hauteur du Bouton.
  BorderType.i = #PB_Path_DiagonalCorner ; Le type de bordure du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  BorderRound.i = 116 ; Taille des coins arrondis du Bouton (Attention, ne devraie pas être plus grand que Height.i - 25 pour un affichage correcte, sans effet si le type de la bordure est defaut.
  InsidePositionOffSet.i = -2 ; Position d'ajustement du dégradé à l'intérieur du Bouton, par defaut se situe à +1 pixel après la bordure du Bouton, une valeur positive éloigne et diminue le dégradé intérieur du Bouton, une valeur négative raproche et agrandis le dégradé intérieur du bouton.
  InsideRoundOffSet.i = -30   ; Ajuste la taille des coins arrondis du dégradé à l'interieur du Bouton, par defaut est égale à BorderRound.i, une valeur positive augmente la taille des coins arrondis du dégradé à l'interieur du Bouton, une valeur négative diminue la taille des coins arrondis du dégradé à l'interieur du Bouton, sans effet si le type de la bordure est defaut.
  BorderColord.q = RGBA(255, 175, 0, 255) ; Couleur de la bordure du Bouton.
  BorderInsideType.i = #PB_Path_DiagonalCorner ; Le type de bordure interieur du bouton: #PB_Path_Default, #PB_Path_RoundCorner, #PB_Path_DiagonalCorner.
  InsideGradientColord1.q = RGBA(200, 200, 200, 255) ; Couleur n°1 du dégradé du Bouton.
  InsideGradientColord2.q = RGBA(230, 230, 230, 255) ; Couleur n°2 du dégradé du Bouton.
  TextColord.q = RGBA(255, 0, 0, 255)                ; Couleur du Texte du Bouton.
  TextHeight.i = 24                                  ; Taille du Texte du Bouton.
  Text$ = "Mon Bouton"                               ; Texte du Bouton.
  
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf

  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
  
EndIf
Version: 1.02.10 le 02/08/2020.
Ajout d'un PanelGadget et ajout d’exemples:
https://drive.google.com/file/d/1EbmYjS ... sp=sharing

Version: 2.00.00 le 04/08/2020, par Mr Dieppedalle David.
Refonte totale, corrections, ajouts de fonctionnalités
Ajout la possibilité de mettre les bordures avec des couleurs dégradé (2, 3 ou 4) avec un mode Horizontal et Vertical.
Ajout la possibilité de mettre le Texte avec des couleurs dégradé (2, 3 ou 4) avec un mode Horizontal et Vertical.

Version: 2.10.00 le 04/08/2020, par Mr Dieppedalle David.
Ajout de la possibilité de mettre une image sur le bouton, avec un OffSet X et Y, une transparence et un alignement parmis 9 possibilité:
#VCB_ImageAlignmentTopLeft
#VCB_ImageAlignmentTop
#VCB_ImageAlignmentTopRight
#VCB_ImageAlignmentLeft
#VCB_ImageAlignmentCenter
#VCB_ImageAlignmentRight
#VCB_ImageAlignmentBottomLeft
#VCB_ImageAlignmentBottom
#VCB_ImageAlignmentBottomRight

Ajout de la possibilité de mettre le texte du Bouton avec un OffSet X et Y et un alignement parmi 9 possibilité:
#VCB_TextAlignmentTopLeft
#VCB_TextAlignmentTop
#VCB_TextAlignmentTopRight
#VCB_TextAlignmentLeft
#VCB_TextAlignmentCenter
#VCB_TextAlignmentRight
#VCB_TextAlignmentBottomLeft
#VCB_TextAlignmentBottom
#VCB_TextAlignmentBottomRight

Version: 2.15.00 le 08/08/2020, par Mr Dieppedalle David.
Ajout de la possibilité de mettre une Ombre sous le Texte du Bouton avec un OffSet en X et Y, une épaisseur ainsi qu'une couleur.
Ajout de la possibilité de mettre une Ombre sous le Bouton avec un OffSet en X, Y, Largeur et Hauteur, ainsi qu'une couleur.

https://drive.google.com/file/d/1nXLk49 ... sp=sharing

Re: VectorCurstomButton

Publié : ven. 31/juil./2020 15:25
par grendizer
c'est du trés bon boulot Bravo shadows :)

Re: VectorCurstomButton

Publié : ven. 31/juil./2020 16:06
par Shadow
grendizer a écrit :c'est du trés bon boulot Bravo shadows :)
Merci bien.....
Cependant certaines choses me déplaisent :(

Plus l'arrondis du bouton est grand, plus grand doit être celui-ci.
Je dois améliorer, c'est bien mais c'est pas encore à la hauteur de mes espérances !

Je me suis cassé les dent sur tous ces foutus calcules :|
De plus, pas possible de faire des boutons carré.

Je vais et je dois amélioré tous cela ! :)

Re: VectorCustomButton

Publié : ven. 31/juil./2020 20:12
par Shadow
Mise à jour 1.02.00.

Re: VectorCurstomButton

Publié : sam. 01/août/2020 10:37
par Mindphazer
Shadow a écrit : Je me suis cassé les dent sur tous ces foutus calcules
A force de te péter les dents il doit plus t'en rester beaucoup :mrgreen:

Re: VectorCurstomButton

Publié : sam. 01/août/2020 12:04
par Shadow
Mindphazer a écrit :
Shadow a écrit : Je me suis cassé les dent sur tous ces foutus calcules
A force de te péter les dents il doit plus t'en rester beaucoup :mrgreen:
Bha si, elles repoussent :mrgreen:

Re: VectorCustomButton

Publié : lun. 03/août/2020 9:34
par Shadow
Refonte Totale en court...

Re: VectorCustomButton

Publié : lun. 03/août/2020 11:22
par Patrick88
ton code me laisse perplexe !
tu te casses le bonnet à faire une procédure avec pleins d'initialisations et de vérif
puis dans le code d'exemple au lieu de passer les paramétrés à la procédure directos tu passes par des variables intermédiaires ?
et c'est ces variables intermédiaires qui sont passées à la procédure ???
les noms de variables sont identiques dans la procedure et dans le code global !!!
bonjour le code doublons, les sources d'erreurs....
déclare tes variables au moins en "protected" ou local (je me souviens plus du terme) dans tes procédures. et global pour le reste...

ou t'es un habitué des goto gosub, et t'as pas bien compris à quoi servent les procédures ...

Pat
Shadow a écrit :

Code : Tout sélectionner

Procedure VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$ = "", TextHeight.i = 16, TextColord.q = 18446744073692774400, TextFont.i = 0, BorderType.i = #PB_Path_Default, BorderColord.q = 18446744073702643350, BorderInsideType.i = #PB_Path_Default, InsideGradientColord1.q = 18446744073707906790, InsideGradientColord2.q = 18446744073705933000, BorderRound.i = 10, InsidePositionOffSet.i = 0, InsideRoundOffSet.i = 0)
...
 
; Exemple:
If OpenWindow(0

  X.i = 25 ; Position X du Bouton.
  Y.i = 25 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
  Height.i = 175; Hauteur du Bouton.
  BorderType.i = #PB_Path_Default ;
....
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
....

rebelotte et dix de fer  
  X.i = 300 ; Position X du Bouton.
  Y.i = 25 ; Position Y du Bouton.
  Width.i = 250 ; Largeur du Bouton.
...
  If StartVectorDrawing(CanvasVectorOutput(0))
    VectorCustomButton(X.i, Y.i, Width.i, Height.i, Text$, TextHeight.i, TextColord.q, TextFont.i, BorderType.i, BorderColord.q, BorderInsideType.i, InsideGradientColord1.q, InsideGradientColord2.q, BorderRound.i, InsidePositionOffSet.i, InsideRoundOffSet.i)
    StopVectorDrawing()  
  EndIf

Re: VectorCustomButton

Publié : mer. 05/août/2020 16:27
par Shadow
Salut,

C'est fait exprès, c'est pour montrer l'utilité des paramètres.
La version 2 arrive bientôt avec encore plus de possibilités, refonte totale.
En court de finition...

Re: VectorCustomButton

Publié : sam. 08/août/2020 17:20
par Shadow
Salutation,

Après un très dur labeur, je suis en mesure enfin de sortir une version totalement refaite.
J'ai ajouté moult choses, je vous laisse découvrir tous ça par vous même.

https://drive.google.com/file/d/1nXLk49 ... sp=sharing

Re: VectorCustomButton

Publié : jeu. 13/août/2020 18:19
par grendizer
pas mal du tout

et maintenant crée nous une interface complète

Re: VectorCustomButton

Publié : jeu. 13/août/2020 18:24
par SPH
grendizer a écrit :pas mal du tout

et maintenant crée nous une interface complète
Ouai ! 8)

J'ai même le titre : Boutons factory :wink:

Re: VectorCustomButton

Publié : jeu. 13/août/2020 18:58
par Shadow
grendizer a écrit :pas mal du tout

et maintenant crée nous une interface complète
Merci.
Oui, j'y pense mais ça demande du boulot !

Re: VectorCustomButton

Publié : ven. 14/août/2020 16:46
par Micoute
Mon exemple est peut-être moche, comma l'a dit falsam, mais il est fonctionnel, là ce ne sont que des images.

Re: VectorCustomButton

Publié : sam. 15/août/2020 20:46
par Kwai chang caine
Bon boulot, merci pour le partage 8)