Code : Tout sélectionner
If LCase(NomEtasImage$) = "normale"
Bouton.Caracteristiques(BoutonID) \ ImageNormale = ImageEtasBouton
; Je déssine le bouton
StartDrawing(CanvasOutput(BoutonID))
DrawImage(ImageID(ImageEtasBouton), 0, 0)
StopDrawing()
ElseIf LCase(NomEtasImage$) = "survoler"
Bouton.Caracteristiques(BoutonID) \ ImageSurvoler = ImageEtasBouton
ElseIf LCase(NomEtasImage$) = "appuyer"
Bouton.Caracteristiques(BoutonID) \ ImageAppuyer = ImageEtasBouton
EndIf
CouleurDegrader1InterieurBoutonTemps = CouleurDegrader1
CouleurDegrader2InterieurBoutonTemps = CouleurDegrader2
ActiverDegraderBoutonTemps = ActiverDegrader
OptionDegraderInterieurBoutonTemps = OptionDegrader
TexteTrensparentBoutonTemps = TexteTransparent
EnregistrementDonnerBouton()
EndIf
EndProcedure
; Ici on va personnaliser notre texte sur le bouton
; Si le BoutonID n'est pas initialiser (crée) rien ne se passera
Procedure TexteBoutonGadget(BoutonID, NomEtasImage$, XTexte, YTexte, Pocile$, Taille, CouleurTexte, CouleurFondTexte, Texte$, OptionTexte)
; X et Y serviron à recadrer notre bouton comme on le souhaite en plus des otpions de cadrage tu texte
; Option pourra être:
; #BG_Texte_Centrage_Auto = Le texte serra automatiquement centrer suivent les options ou simplement centrer au millieux du bouton si juste cette option est définie
; #BG_Texte_Gauche = Le texte sera mis à gauche
; #BG_Texte_Droite = Le texte sera mis à droite
; #BG_Texte_Haut = Le texte sera mis en haut
; #BG_Texte_Bas = Le texte sera mis en bas
; #BG_Texte_Gras = Le texte sera en gras
; #BG_Texte_Italique = Le texte sera en italique
; #BG_Texte_Soulignier = Le texte sera soulignier
; #BG_Texte_Barrer = Le texte sera en barrer
; Ont pourais aussi mètre d'autre options comme le pivotement du texte, un dégrader pour le texte suivent l'option choisie mais ça va pas être façile !
BoutonID = VerificationValeurVariable(BoutonID)
XTexte = VerificationValeurVariable(XTexte)
YTexte = VerificationValeurVariable(YTexte)
Taille = VerificationValeurVariable(Taille)
CouleurTexte = VerificationValeurVariable(CouleurTexte)
CouleurFondTexte = VerificationValeurVariable(CouleurFondTexte)
If OptionTexte < -1
OptionTexte = -1
ElseIf OptionTexte <> -1
OptionTexte = VerificationValeurVariable(OptionTexte)
EndIf
Largeur = Bouton.Caracteristiques(BoutonID) \ Largeur
Hauteur = Bouton.Caracteristiques(BoutonID) \ Hauteur
RecuperationDonnerBouton()
OptionTexteBoutonTemps = 0
; Si le bouton existe bien et que l'image de l'états du bouton existe également
If IsGadget(BoutonID)
If OptionTexte = -1
FontID = LoadFont(#PB_Any, Pocile$, Taille, #PB_Font_Bold | #PB_Font_Italic | #PB_Font_Underline | #PB_Font_StrikeOut | #PB_Font_HighQuality)
OptionTexte = #PB_Font_Bold | #PB_Font_Italic | #PB_Font_Underline | #PB_Font_StrikeOut | #PB_Font_HighQuality
Else
FontID = LoadFont(#PB_Any, Pocile$, Taille, OptionTexte | #PB_Font_HighQuality)
OptionTexte & #PB_Font_HighQuality
EndIf
ImageEtasBouton = CreateImage(#PB_Any, Largeur, Hauteur)
StartDrawing(ImageOutput(ImageEtasBouton))
If ActiverDegraderBoutonTemps = 1
DrawingMode(#PB_2DDrawing_Gradient)
If OptionDegraderInterieurBoutonTemps = 0
; degrader en horizontale
LinearGradient(1, 1, Largeur, 1)
GradientColor(1, CouleurDegrader1InterieurBoutonTemps)
LinearGradient(Largeur, 1, 1, 1)
GradientColor(0, CouleurDegrader2InterieurBoutonTemps)
ElseIf OptionDegraderInterieurBoutonTemps = 1
; degrader en verticalle
LinearGradient(1, Largeur, 1, 1)
GradientColor(0.6, CouleurDegrader1InterieurBoutonTemps)
LinearGradient(1, 1, 1, Largeur)
GradientColor(0, CouleurDegrader2InterieurBoutonTemps)
EndIf
Box(0, 0, Largeur, Hauteur, 0)
DrawingMode(0)
Else
If OptionDegraderInterieurBoutonTemps = 0
Box(0, 0, Largeur / 2, Hauteur, CouleurDegrader1InterieurBoutonTemps)
Box(Largeur / 2, 0, Largeur / 2, Hauteur, CouleurDegrader2InterieurBoutonTemps)
ElseIf OptionDegraderInterieurBoutonTemps = 1
Box(0, 0, Largeur, Hauteur / 2, CouleurDegrader1InterieurBoutonTemps)
Box(0, Hauteur / 2, Largeur, Hauteur, CouleurDegrader2InterieurBoutonTemps)
EndIf
EndIf
Box(0, 0, Largeur - TailleDesBorduresBoutonTemps, TailleDesBorduresBoutonTemps, CouleurBordureHauteBoutonTemps)
Box(Largeur - TailleDesBorduresBoutonTemps, 0, TailleDesBorduresBoutonTemps, Hauteur - TailleDesBorduresBoutonTemps, CouleurBordureDroiteBoutonTemps)
Box(TailleDesBorduresBoutonTemps, Hauteur - TailleDesBorduresBoutonTemps, Largeur - TailleDesBorduresBoutonTemps, TailleDesBorduresBoutonTemps, CouleurBordureBasBoutonTemps)
Box(0, TailleDesBorduresBoutonTemps, TailleDesBorduresBoutonTemps, Hauteur - TailleDesBorduresBoutonTemps, CouleurBordureGaucheBoutonTemps)
If IsFont(NumeroPoliceBoutonTemps)
DrawingFont(FontID(FontID))
Else
DrawingFont(FontID(#PB_Default))
EndIf
If IsImage(ImageBoutonTemps)
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawImage(ImageID(ImageBoutonTemps), XImageBoutonTemps, YImageBoutonTemps, ImageWidth(ImageBoutonTemps), ImageHeight(ImageBoutonTemps))
DrawingMode(0)
EndIf
If XTexte = 0
PositionTexteX = Val(StringField(CentreTexteSurMonBouton(BoutonID, Texte$), 1, "|"))
Else
PositionTexteX = XTexte
EndIf
If YTexte = 0
PositionTexteY = Val(StringField(CentreTexteSurMonBouton(BoutonID, Texte$), 2, "|"))
Else
PositionTexteY = YTexte
EndIf
If CouleurDegrader1InterieurBoutonTemps <> CouleurDegrader2InterieurBoutonTemps
DrawingMode(#PB_2DDrawing_Transparent)
Else
DrawingMode(0)
EndIf
If TexteTrensparentBoutonTemps = 1
DrawingMode(#PB_2DDrawing_Transparent)
EndIf
If LCase(NomEtasImage$) = "normale" Or LCase(NomEtasImage$) = "survoler"
DrawText(PositionTexteX, PositionTexteY, Texte$, CouleurTexte, CouleurFondTexte)
ElseIf LCase(NomEtasImage$) = "appuyer"
PositionTexteX + 1
PositionTexteY + 1
DrawText(PositionTexteX, PositionTexteY, Texte$, CouleurTexte, CouleurFondTexte)
EndIf
StopDrawing()
If LCase(NomEtasImage$) = "normale"
Bouton.Caracteristiques(BoutonID) \ ImageNormale = ImageEtasBouton
; Je déssine le bouton
StartDrawing(CanvasOutput(BoutonID))
DrawImage(ImageID(ImageEtasBouton), 0, 0)
StopDrawing()
ElseIf LCase(NomEtasImage$) = "survoler"
Bouton.Caracteristiques(BoutonID) \ ImageSurvoler = ImageEtasBouton
ElseIf LCase(NomEtasImage$) = "appuyer"
Bouton.Caracteristiques(BoutonID) \ ImageAppuyer = ImageEtasBouton
EndIf
PocileTexteBoutonTemps$ = Pocile$
TailleTexteBoutonTemps = Taille
CouleurTexteBoutonTemps = CouleurTexte
CouleurFondTexteBoutonTemps = CouleurFondTexte
TexteBoutonTemps$ = Texte$
OptionTexteBoutonTemps = OptionTexte
NumeroPoliceBoutonTemps = FontID
XTexteBoutonTemps = PositionTexteX
YTexteBoutonTemps = PositionTexteY
EnregistrementDonnerBouton()
EndIf
EndProcedure
Procedure ImageBoutonGadget(BoutonID, NomEtasImage$, ImageBouton, XImage, YImage)
BoutonID = VerificationValeurVariable(BoutonID)
ImageBouton = VerificationValeurVariable(ImageBouton)
XImage = VerificationValeurVariable(XImage)
YImage = VerificationValeurVariable(YImage)
Largeur = Bouton.Caracteristiques(BoutonID) \ Largeur
Hauteur = Bouton.Caracteristiques(BoutonID) \ Hauteur
RecuperationDonnerBouton()
; Si le bouton existe bien et que l'image de l'états du bouton existe également
If IsGadget(BoutonID)
FontID = LoadFont(#PB_Any, PocileTexteBoutonTemps$, TailleTexteBoutonTemps, OptionTexteBoutonTemps)
ImageEtasBouton = CreateImage(#PB_Any, Largeur, Hauteur)
StartDrawing(ImageOutput(ImageEtasBouton))
If ActiverDegraderBoutonTemps = 1
DrawingMode(#PB_2DDrawing_Gradient)
If OptionDegraderInterieurBoutonTemps = 0
; degrader en horizontale
LinearGradient(1, 1, Largeur, 1)
GradientColor(1, CouleurDegrader1InterieurBoutonTemps)
LinearGradient(Largeur, 1, 1, 1)
GradientColor(0, CouleurDegrader2InterieurBoutonTemps)
ElseIf OptionDegraderInterieurBoutonTemps = 1
; degrader en verticalle
LinearGradient(1, Largeur, 1, 1)
GradientColor(0.6, CouleurDegrader1InterieurBoutonTemps)
LinearGradient(1, 1, 1, Largeur)
GradientColor(0, CouleurDegrader2InterieurBoutonTemps)
EndIf
Box(0, 0, Largeur, Hauteur, 0)
DrawingMode(0)
Else
If OptionDegraderInterieurBoutonTemps = 0
Box(0, 0, Largeur / 2, Hauteur, CouleurDegrader1InterieurBoutonTemps)
Box(Largeur / 2, 0, Largeur / 2, Hauteur, CouleurDegrader2InterieurBoutonTemps)
ElseIf OptionDegraderInterieurBoutonTemps = 1
Box(0, 0, Largeur, Hauteur / 2, CouleurDegrader1InterieurBoutonTemps)
Box(0, Hauteur / 2, Largeur, Hauteur, CouleurDegrader2InterieurBoutonTemps)
EndIf
EndIf
Box(0, 0, Largeur - TailleDesBorduresBoutonTemps, TailleDesBorduresBoutonTemps, CouleurBordureHauteBoutonTemps)
Box(Largeur - TailleDesBorduresBoutonTemps, 0, TailleDesBorduresBoutonTemps, Hauteur - TailleDesBorduresBoutonTemps, CouleurBordureDroiteBoutonTemps)
Box(TailleDesBorduresBoutonTemps, Hauteur - TailleDesBorduresBoutonTemps, Largeur - TailleDesBorduresBoutonTemps, TailleDesBorduresBoutonTemps, CouleurBordureBasBoutonTemps)
Box(0, TailleDesBorduresBoutonTemps, TailleDesBorduresBoutonTemps, Hauteur - TailleDesBorduresBoutonTemps, CouleurBordureGaucheBoutonTemps)
If IsFont(NumeroPoliceBoutonTemps)
DrawingFont(FontID(FontID))
Else
DrawingFont(FontID(#PB_Default))
EndIf
If CouleurDegrader1InterieurBoutonTemps <> CouleurDegrader2InterieurBoutonTemps
DrawingMode(#PB_2DDrawing_Transparent)
Else
DrawingMode(0)
EndIf
If TexteTrensparentBoutonTemps = 1
DrawingMode(#PB_2DDrawing_Transparent)
EndIf
If XImage = 0
PositionImageX = Val(StringField(CentreImageSurMonBouton(BoutonID, ImageBouton), 1, "|")) + XImage
Else
PositionImageX = XImage
EndIf
If YImage = 0
PositionImageY = Val(StringField(CentreImageSurMonBouton(BoutonID, ImageBouton), 2, "|")) + YImage
Else
PositionImageY = YImage
EndIf
If IsImage(ImageBouton)
DrawingMode(#PB_2DDrawing_AlphaBlend)
If LCase(NomEtasImage$) = "normale" Or LCase(NomEtasImage$) = "survoler"
DrawImage(ImageID(ImageBouton), PositionImageX, PositionImageY, ImageWidth(ImageBouton), ImageHeight(ImageBouton))
ElseIf LCase(NomEtasImage$) = "appuyer"
DrawImage(ImageID(ImageBouton), PositionImageX + 1, PositionImageY + 1, ImageWidth(ImageBouton), ImageHeight(ImageBouton))
EndIf
DrawingMode(0)
If LCase(NomEtasImage$) = "normale"
Bouton.Caracteristiques(BoutonID) \ ImageBoutonBoutonNormale = ImageBouton
Bouton.Caracteristiques(BoutonID) \ XImageBoutonNormale = PositionImageX
Bouton.Caracteristiques(BoutonID) \ YImageBoutonNormale = PositionImageY
ElseIf LCase(NomEtasImage$) = "survoler"
Bouton.Caracteristiques(BoutonID) \ ImageBoutonBoutonSurvoler = ImageBouton
Bouton.Caracteristiques(BoutonID) \ XImageBoutonSurvoler = PositionImageX
Bouton.Caracteristiques(BoutonID) \ YImageBoutonSurvoler = PositionImageY
ElseIf LCase(NomEtasImage$) = "appuyer"
Bouton.Caracteristiques(BoutonID) \ ImageBoutonBoutonAppuyer = ImageBouton
Bouton.Caracteristiques(BoutonID) \ XImageBoutonAppuyer = PositionImageX
Bouton.Caracteristiques(BoutonID) \ YImageBoutonAppuyer = PositionImageY
EndIf
EndIf
DrawText(XTexteBoutonTemps, YTexteBoutonTemps, TexteBoutonTemps$, CouleurTexteBoutonTemps, CouleurFondTexteBoutonTemps)
StopDrawing()
If LCase(NomEtasImage$) = "normale"
Bouton.Caracteristiques(BoutonID) \ ImageNormale = ImageEtasBouton
; Je déssine le bouton
StartDrawing(CanvasOutput(BoutonID))
DrawImage(ImageID(ImageEtasBouton), 0, 0)
StopDrawing()
ElseIf LCase(NomEtasImage$) = "survoler"
Bouton.Caracteristiques(BoutonID) \ ImageSurvoler = ImageEtasBouton
ElseIf LCase(NomEtasImage$) = "appuyer"
Bouton.Caracteristiques(BoutonID) \ ImageAppuyer = ImageEtasBouton
EndIf
EnregistrementDonnerBouton()
EndIf
EndProcedure
Procedure.l EventBouton(EventGadget, EventType)
Select EventType
Case #PB_EventType_MouseEnter
If Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 0
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
; Je déssine le bouton
StartDrawing(CanvasOutput(EventGadget))
DrawImage(ImageID(Bouton.Caracteristiques(EventGadget) \ ImageSurvoler), 0, 0)
StopDrawing()
ElseIf Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 1
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageAppuyer
; Je déssine le bouton
StartDrawing(CanvasOutput(EventGadget))
DrawImage(ImageID(Bouton.Caracteristiques(EventGadget) \ ImageAppuyer), 0, 0)
StopDrawing()
EndIf
Case #PB_EventType_MouseLeave
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
; Je déssine le bouton
StartDrawing(CanvasOutput(EventGadget))
DrawImage(ImageID(Bouton.Caracteristiques(EventGadget) \ ImageNormale), 0, 0)
StopDrawing()
Case #PB_EventType_LeftButtonDown
SauvegardeBoutonAppuyer = EventGadget
SetGadgetAttribute(EventGadget, #PB_Canvas_Clip , 0) ; Enlève le confinement (clippage).
; Je déssine le bouton
StartDrawing(CanvasOutput(EventGadget))
DrawImage(ImageID(Bouton.Caracteristiques(EventGadget) \ ImageAppuyer), 0, 0)
StopDrawing()
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageAppuyer
Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 1
Case #PB_EventType_LeftButtonUp
If Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageAppuyer And Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 1
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 0
; Je déssine le bouton
StartDrawing(CanvasOutput(EventGadget))
DrawImage(ImageID(Bouton.Caracteristiques(EventGadget) \ ImageSurvoler), 0, 0)
StopDrawing()
ProcedureReturn 1
EndIf
ForEach EnumerationBouton()
; Je reset tous les boutons
Bouton.Caracteristiques(EnumerationBouton()) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
Bouton.Caracteristiques(EnumerationBouton()) \ EtasBoutonGaucheSouris = 0
Next
EndSelect
EndProcedure
;}
;
Procedure ThreadDecoupageImage(Image)
DecoupageImage(Image, RenvoyerCouleurDegrader1InterieurBoutonNormale(#BoutonImageCouleurArrierPlantSprite), RenvoyerCouleurDegrader1InterieurBoutonNormale(#BoutonImageCouleurFeuille), RenvoyerCouleurDegrader1InterieurBoutonNormale(#BoutonImageCouleurArrierPlantSprite))
EndProcedure
Enumeration 1
#Fenetre
EndEnumeration
Procedure InterfaceDecoupageImage(CouleurFenetre, CouleurBordure, CouleurTexteInfo)
If OpenWindow(#Fenetre, 327, 177, 500, 345, "Découpeur d'image 1.02 crée par: Dieppedalle David", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
SetWindowColor(#Fenetre, CouleurFenetre)
TextGadget(#TexeInfoCouleurArrierPlantSprite, 65, 325, 150, 18, "Couleur de l'arrier plant du sprite")
SetGadgetColor(#TexeInfoCouleurArrierPlantSprite, #PB_Gadget_FrontColor, CouleurTexteInfo)
SetGadgetColor(#TexeInfoCouleurArrierPlantSprite, #PB_Gadget_BackColor, CouleurFenetre)
TextGadget(#TexeInfoCouleurFeuille, 275, 325, 100, 18, "Couleur de la Feuille")
SetGadgetColor(#TexeInfoCouleurFeuille, #PB_Gadget_FrontColor, CouleurTexteInfo)
SetGadgetColor(#TexeInfoCouleurFeuille, #PB_Gadget_BackColor, CouleurFenetre)
ScrollAreaGadget(#AreaGadget, 5, 5, 490, 310, 490, 310, 100, #PB_ScrollArea_BorderLess)
CanvasGadget(#CanvasGadget, 0, 0, 490, 310, #PB_Canvas_ClipMouse | #PB_Canvas_Keyboard)
CurseurPersonnaliser("Pipette.png")
GadgetToolTip(#CanvasGadget, "Cliquez centre pour charger une image")
CloseGadgetList()
ImageBordureHauteCanva = CreateImage(#PB_Any, GadgetWidth(#AreaGadget) + 4, 2)
ImageBordureBasCanva = CreateImage(#PB_Any, GadgetWidth(#AreaGadget) + 4, 2)
ImageBordureGaucheCanva = CreateImage(#PB_Any, 2, GadgetHeight(#AreaGadget) + 2)
ImageBordureDroiteCanva = CreateImage(#PB_Any, 2, GadgetHeight(#AreaGadget) + 2)
StartDrawing(ImageOutput(ImageBordureHauteCanva))
Plot(0, 1, CouleurBordure)
Plot(GadgetWidth(#AreaGadget) + 4 - 1, 1, CouleurBordure)
Line(0, 0, GadgetWidth(#AreaGadget) + 4, 1, CouleurBordure)
Line(1, 1, GadgetWidth(#AreaGadget) + 2, 1, RGB(255, 255, 255))
StopDrawing()
StartDrawing(ImageOutput(ImageBordureBasCanva))
Line(0, 1, GadgetWidth(#AreaGadget) + 4, 1, CouleurBordure)
Line(0, 0, GadgetWidth(#AreaGadget) + 4, 1, RGB(255, 255, 255))
Plot(0, 0, CouleurBordure)
Plot(GadgetWidth(#AreaGadget) + 4 - 1, 0, CouleurBordure)
StopDrawing()
StartDrawing(ImageOutput(ImageBordureGaucheCanva))
Line(0, 0, 1, GadgetHeight(#AreaGadget) + 4, CouleurBordure)
Line(1, 0, 1, GadgetHeight(#AreaGadget) + 4, RGB(255, 255, 255))
StopDrawing()
StartDrawing(ImageOutput(ImageBordureDroiteCanva))
Line(0, 0, 1, GadgetHeight(#AreaGadget) + 4, RGB(255, 255, 255))
Line(1, 0, 1, GadgetHeight(#AreaGadget) + 4, CouleurBordure)
StopDrawing()
ImageGadget(#PB_Any, GadgetX(#AreaGadget) - 2, GadgetY(#AreaGadget) - 2, GadgetWidth(#AreaGadget) + 4, 2, ImageID(ImageBordureHauteCanva))
ImageGadget(#PB_Any, GadgetX(#AreaGadget) - 2, GadgetY(#AreaGadget) + GadgetHeight(#AreaGadget), GadgetWidth(#AreaGadget) + 4, 2, ImageID(ImageBordureBasCanva))
ImageGadget(#PB_Any, GadgetX(#AreaGadget) - 2, GadgetY(#AreaGadget), 2, GadgetHeight(#AreaGadget) + 3, ImageID(ImageBordureGaucheCanva))
ImageGadget(#PB_Any, GadgetX(#AreaGadget) + GadgetWidth(#AreaGadget), GadgetY(#AreaGadget), 2, GadgetHeight(#AreaGadget) + 3, ImageID(ImageBordureDroiteCanva))
BoutonGadget(#BoutonDecouper, 400, 320, 58, 22, "Découper", 0, 0, RGB(0, 0, 255), RGB(240, 240, 240), 7, 0, RGB(255, 198, 0), #PB_Cursor_Hand, 0, 0, 0, 0)
GadgetToolTip(#BoutonDecouper, "Ceci va lancer la découpe automatique des sprites dans l'image")
BoutonGadget(#BoutonImageCouleurArrierPlantSprite, 40, 321, 20, 20, "", 0, 0, 0, 0, 0, 0, RGB(240, 240, 240), #PB_Cursor_Hand, ImageCouleurArrierPlantSprite, 0, 0, 0)
GadgetToolTip(#BoutonImageCouleurArrierPlantSprite, "Ceci est la couleur de l'arrière plant de vos petits sprites dans l'image, Cliquez gauche sur l'éditeur d'image pour la capturer")
BoutonGadget(#BoutonImageCouleurFeuille, 250, 321, 20, 20, "", 0, 0, 0, 0, 0, 0, RGB(240, 240, 240), #PB_Cursor_Hand, ImageCouleurFeuille, 0, 0, 0)
GadgetToolTip(#BoutonImageCouleurFeuille, "Ceci est la couleur de l'image qui contient vos petits sprites, Cliquez droit sur l'éditeur d'image pour la capturer")
InterieurBoutonGadget(#BoutonDecouper, "Normale", RGB(150, 150, 150), RGB(255, 255, 255), 1, 1, 1)
InterieurBoutonGadget(#BoutonDecouper, "Survoler", RGB(150, 150, 150), RGB(255, 255, 255), 1, 1, 1)
InterieurBoutonGadget(#BoutonDecouper, "Appuyer", RGB(150, 150, 150), RGB(255, 255, 255), 1, 1, 1)
TexteBoutonGadget(#BoutonDecouper, "Survoler", 0, 0, "Arial", 7, RGB(0, 0, 255), 0, "Découper", #PB_Font_Underline | #PB_Font_Bold)
TexteBoutonGadget(#BoutonDecouper, "Appuyer", 0, 0, "Arial", 7, RGB(0, 0, 255), 0, "Découper", #PB_Font_Underline | #PB_Font_Bold)
Repeat ; Départ des évènements de boucle
Event = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la fenêtre
EventWindow = EventWindow() ; La fenêtre où l'évènement c'est produit
EventGadget = EventGadget() ; Pour savoir sur quel gadget c'est produis l'évènement
EventMenu = EventMenu() ; Pour savoir sur quel menue c'est produis l'évènement
EventType = EventType() ; Le type d'évènement qui c'est produis sur le gadget
Select Event
Case #PB_Event_Gadget
Select EventGadget
Case #BoutonDecouper
If EventBouton(EventGadget, EventType)
CouleurBoutonArrierPlantSprite = RenvoyerCouleurDegrader1InterieurBoutonNormale(#BoutonImageCouleurArrierPlantSprite)
CouleurBoutonFeuille = RenvoyerCouleurDegrader1InterieurBoutonNormale(#BoutonImageCouleurFeuille)
ThreadDecoupageImage = CreateThread(@ThreadDecoupageImage(), SauvegargeImage)
WaitThread(ThreadDecoupageImage)
EndIf
Case #BoutonImageCouleurArrierPlantSprite
If EventBouton(EventGadget, EventType)
EndIf
Case #BoutonImageCouleurFeuille
If EventBouton(EventGadget, EventType)
EndIf
Case #CanvasGadget
If EventType = #PB_EventType_LeftButtonUp
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 0
ForEach EnumerationBouton()
; Je reset tous les boutons
Bouton.Caracteristiques(EnumerationBouton()) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
Bouton.Caracteristiques(EnumerationBouton()) \ EtasBoutonGaucheSouris = 0
Next
EndIf
Select EventType
Case #PB_EventType_LeftDoubleClick ; Double clique gauche
Case #PB_EventType_LeftButtonDown ; Clique gauche
SetGadgetAttribute(EventGadget, #PB_Canvas_Clip , 0) ; Enlève le confinement (clippage).
If IsImage(SauvegargeImage)
MouseX = GetGadgetAttribute(#CanvasGadget, #PB_Canvas_MouseX)
MouseY = GetGadgetAttribute(#CanvasGadget, #PB_Canvas_MouseY)
StartDrawing(ImageOutput(SauvegargeImage))
CouleurArrierPlantSprite = Point(MouseX, MouseY)
StopDrawing()
If SauvegardeCouleurArrierPlantSprite <> CouleurArrierPlantSprite
BoutonGadget(#BoutonImageCouleurArrierPlantSprite, 40, 321, 20, 20, "", 0, 0, 0, 0, 0, 0, CouleurArrierPlantSprite, #PB_Cursor_Hand, 0, 0, 0, 0)
GadgetToolTip(#BoutonImageCouleurArrierPlantSprite, "Ceci est la couleur de l'arrière plant de vos petits sprites dans l'image, Cliquez gauche sur l'éditeur d'image pour la capturer")
SauvegardeCouleurArrierPlantSprite = CouleurArrierPlantSprite
EndIf
EndIf
Case #PB_EventType_RightButtonDown ; Clique droit
SetGadgetAttribute(EventGadget, #PB_Canvas_Clip , 0) ; Enlève le confinement (clippage).
If IsImage(SauvegargeImage)
MouseX = GetGadgetAttribute(#CanvasGadget, #PB_Canvas_MouseX)
MouseY = GetGadgetAttribute(#CanvasGadget, #PB_Canvas_MouseY)
StartDrawing(ImageOutput(SauvegargeImage))
CouleurFeuille = Point(MouseX, MouseY)
StopDrawing()
If SauvegardeCouleurFeuille <> CouleurFeuille
BoutonGadget(#BoutonImageCouleurFeuille, 250, 321, 20, 20, "", 0, 0, 0, 0, 0, 0, CouleurFeuille, #PB_Cursor_Hand, 0, 0, 0, 0)
GadgetToolTip(#BoutonImageCouleurFeuille, "Ceci est la couleur de l'image qui contient vos petits sprites, Cliquez droit sur l'éditeur d'image pour la capturer")
SauvegardeCouleurFeuille = CouleurFeuille
EndIf
EndIf
Case #PB_EventType_MiddleButtonDown ; Clique centre
SetGadgetAttribute(EventGadget, #PB_Canvas_Clip , 0) ; Enlève le confinement (clippage).
ImageOriginale = ChargementImage()
If IsImage(ImageOriginale)
SauvegargeImage = ImageOriginale
SetGadgetAttribute(#AreaGadget, #PB_ScrollArea_InnerWidth, ImageWidth(SauvegargeImage))
SetGadgetAttribute(#AreaGadget, #PB_ScrollArea_InnerHeight, ImageHeight(SauvegargeImage))
ResizeGadget(#CanvasGadget, 0, 0, ImageWidth(SauvegargeImage), ImageHeight(SauvegargeImage))
StartDrawing(CanvasOutput(#CanvasGadget))
DrawImage(ImageID(SauvegargeImage), 0, 0, ImageWidth(SauvegargeImage), ImageHeight(SauvegargeImage))
StopDrawing()
EndIf
Case #PB_EventType_MouseWheel ; Molette
EtasMolette = GetGadgetAttribute(#CanvasGadget, #PB_Canvas_WheelDelta)
Case #PB_EventType_MouseEnter
SetActiveGadget(#CanvasGadget)
Case #PB_EventType_MouseLeave
SetActiveGadget(#AreaGadget)
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenu
Case 0
EndSelect
Case 514, 160 ; Bouton gauche relacher avec la souris sur la fenêtre ou en dehord de celle-ci
If Not IsMouseOverGadget(EventGadget)
Bouton.Caracteristiques(EventGadget) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
Bouton.Caracteristiques(EventGadget) \ EtasBoutonGaucheSouris = 0
ForEach EnumerationBouton()
; Je reset tous les boutons
Bouton.Caracteristiques(EnumerationBouton()) \ EtasBouton = Bouton.Caracteristiques(EventGadget) \ ImageNormale
Bouton.Caracteristiques(EnumerationBouton()) \ EtasBoutonGaucheSouris = 0
Next
Else
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow ; Fin des évènements de boucle
EndIf
EndProcedure
InterfaceDecoupageImage(RGB(220, 220, 220), RGB(255, 0, 0), RGB(0, 150, 0))