J'ai travaillé sur CanvasGadget (exemple purebasic) car je veux faire un logiciel de dessin pour mes filles.
J'ai avancé sur le code ci-après, mais je veux rajouter d'autres outils (rajout de différentes formes, Texte + gestion TailleTexte, Annuler la dernière commande....)
Il faut donc que j'affiche :
PosX
PosY
Pinceau (clique=> ouvre fenetre sélection Pinceau1, Pinceau2, Pinceau3, Pinceau4, Pinceau5=
Trait => Trait1, Trait2, Trait3, Trait4, Trait5
Forme => Carré, Rectangle, Rond, Ellipse
Ce qui permet de gagner de la place pour les icones possibles, mais surtout ça fait pro et propre
Merci pour votre aide (je suis débuttant)
De plus les commandes trait sont pas bien faites en diagonales!
Je n'arrive pas à récupérer des icones systemes pour remplacer "Enregistrer"
Code : Tout sélectionner
Enumeration
#IMAGE_Content ; stores the previous CanvasGadget content while the mouse is down
#IMAGE_Color
#IMAGE_LoadSave
EndEnumeration
Enumeration
#GADGET_Canvas
#GADGET_Color
#GADGET_Brush1: #GADGET_Brush2 : #GADGET_Brush3:#GADGET_Brush4:#GADGET_Brush5
#GADGET_Line1 : #GADGET_Line2 : #GADGET_Line3: #GADGET_Line4:#GADGET_Line5
#GADGET_BoxBox : #GADGET_Box
#GADGET_CircleCircle : #GADGET_Circle
; #GADGET_Triangle
#GADGET_Fill
#GADGET_Clear
#GADGET_Load
#GADGET_Save
#GADGET_PosX: #GADGET_PosY
EndEnumeration
;####################################################################### PARAM PERSO ##########
#Author ="PB"
#TitleMain ="CanvasGadget Variation"
#Title = #TitleMain+" "+#Author
#NbButton = 20
#PasButton=5 ;espace vide entre fin bouton et fin écran
#ChxButtonDflt =#GADGET_Brush2 ; bouton par défaut
#Taille11=1:#Taille12=2:#Taille13=4:#Taille14=6:#Taille15=8 ;taille du point 1 à 5
#ChxCol = "Choix de la couleur"
#Outil1 ="Pinceau"
#Outil2 ="Trait"
#Outil_CircleCircle ="Cercle":#Outil_Circle="Ellipse"
#Outil_BoxBox ="Carré" : #Outil_Box="Rectangle"
;####################################################################### FIN PARAM PERSO ##########
If ExamineDesktops() ; Liste les bureaux
Larg = DesktopWidth(0) ; Largeur actuelle
Haut = DesktopHeight(0) ; Hauteur actuelle
Coul = DesktopDepth(0) ; Profondeur de couleurs actuelle
CentreX=Width/2
CentreY=Height/2
TailleButtonX.l = 50
TailleButtonY.l = (Haut-61)/#NbButton
EndIf
Global CurrentColor, CurrentMode, StartX, StartY
; Draw the mouse action result depending on the currently selected mode and event type
;
Procedure DrawAction(x, y, EventType)
If StartDrawing(CanvasOutput(#GADGET_Canvas))
Select CurrentMode
Case #GADGET_Brush1
If EventType = #PB_EventType_LeftButtonDown Or EventType = #PB_EventType_MouseMove
Circle(x, y, #Taille11, CurrentColor)
EndIf
Case #GADGET_Brush2
If EventType = #PB_EventType_LeftButtonDown Or EventType = #PB_EventType_MouseMove
Circle(x, y, #Taille12, CurrentColor)
EndIf
Case #GADGET_Brush3
If EventType = #PB_EventType_LeftButtonDown Or EventType = #PB_EventType_MouseMove
Circle(x, y, #Taille13, CurrentColor)
EndIf
Case #GADGET_Brush4
If EventType = #PB_EventType_LeftButtonDown Or EventType = #PB_EventType_MouseMove
Circle(x, y, #Taille14, CurrentColor)
EndIf
Case #GADGET_Brush5
If EventType = #PB_EventType_LeftButtonDown Or EventType = #PB_EventType_MouseMove
Circle(x, y, #Taille15, CurrentColor)
EndIf
Case #GADGET_Line1
DrawImage(ImageID(#IMAGE_Content), 0, 0)
LineXY(StartX, StartY, x, y, CurrentColor)
Case #GADGET_Line2
DrawImage(ImageID(#IMAGE_Content), 0, 0)
LineXY(StartX, StartY, x, y, CurrentColor)
LineXY(StartX+1, StartY+1, x+1, y+1, CurrentColor)
Case #GADGET_Line3
DrawImage(ImageID(#IMAGE_Content), 0, 0)
LineXY(StartX, StartY, x, y, CurrentColor)
LineXY(StartX+1, StartY+1, x+1, y+1, CurrentColor)
LineXY(StartX+2, StartY+2, x+2, y+2, CurrentColor)
LineXY(StartX+3, StartY+3, x+3, y+3, CurrentColor)
Case #GADGET_Line4
DrawImage(ImageID(#IMAGE_Content), 0, 0)
LineXY(StartX, StartY, x, y, CurrentColor)
LineXY(StartX+1, StartY+1, x+1, y+1, CurrentColor)
LineXY(StartX+2, StartY+2, x+2, y+2, CurrentColor)
LineXY(StartX+3, StartY+3, x+3, y+3, CurrentColor)
LineXY(StartX+4, StartY+4, x+4, y+4, CurrentColor)
LineXY(StartX+5, StartY+5, x+5, y+5, CurrentColor)
Case #GADGET_Line5
DrawImage(ImageID(#IMAGE_Content), 0, 0)
LineXY(StartX, StartY, x, y, CurrentColor)
LineXY(StartX+1, StartY+1, x+1, y+1, CurrentColor)
LineXY(StartX+2, StartY+2, x+2, y+2, CurrentColor)
LineXY(StartX+3, StartY+3, x+3, y+3, CurrentColor)
LineXY(StartX+4, StartY+4, x+4, y+4, CurrentColor)
LineXY(StartX+5, StartY+5, x+5, y+5, CurrentColor)
LineXY(StartX+6, StartY+6, x+6, y+6, CurrentColor)
LineXY(StartX+7, StartY+7, x+7, y+7, CurrentColor)
;Case #GADGET_Triangle
; MessageRequester("","non disponible")
Case #GADGET_BoxBox ;carré
DrawImage(ImageID(#IMAGE_Content), 0, 0)
If x > StartX And y < StartY:Box(StartX, StartY,-StartX+x,StartX-x,CurrentColor):EndIf ;HautDroit
If x > StartX And y > StartY:Box(StartX, StartY, y-StartY, y-StartY, CurrentColor):EndIf;BasDroit
If x < StartX And y< StartY :Box(StartX, StartY, x-StartX, x-StartX, CurrentColor):EndIf;HautGauche
If x < StartX And y> StartY :Box(StartX, StartY,-StartX+x,StartX-x,CurrentColor):EndIf;BasGauche
Case #GADGET_Box ;rectangle
DrawImage(ImageID(#IMAGE_Content), 0, 0)
Box(StartX, StartY, x-StartX, y-StartY, CurrentColor)
Case #GADGET_CircleCircle
DrawImage(ImageID(#IMAGE_Content), 0, 0)
If x > StartX
rx = x - StartX:Ellipse(StartX, StartY, rx, rx, CurrentColor)
Else
rx = StartX - x:Ellipse(StartX, StartY, rx, rx, CurrentColor)
EndIf
If y > StartY
ry = y - StartY: Ellipse(StartX, StartY, ry, ry, CurrentColor)
Else
ry = StartY - y: Ellipse(StartX, StartY, ry, ry, CurrentColor)
EndIf
Case #GADGET_Circle
DrawImage(ImageID(#IMAGE_Content), 0, 0)
If x > StartX
rx = x - StartX
Else
rx = StartX - x
EndIf
If y > StartY
ry = y - StartY
Else
ry = StartY - y
EndIf
If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Modifiers) & #PB_Canvas_Control
ry = rx
EndIf
Ellipse(StartX, StartY, rx, ry, CurrentColor)
Case #GADGET_Fill
If EventType = #PB_EventType_LeftButtonDown
FillArea(x, y, -1, CurrentColor)
EndIf
EndSelect
StopDrawing()
EndIf
EndProcedure
UseJPEGImageDecoder()
UseJPEGImageEncoder()
;********************************************************************************************************
;################################################################################ creer images boutons #################
;###points
If CreateImage(11, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(11))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Circle(TailleButtonX/2, TailleButtonY/2, #Taille11, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(12, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(12))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Circle(TailleButtonX/2, TailleButtonY/2, #Taille12, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(13, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(13))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Circle(TailleButtonX/2, TailleButtonY/2, #Taille13, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(14, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(14))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Circle(TailleButtonX/2, TailleButtonY/2, #Taille14, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(15, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(15))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Circle(TailleButtonX/2, TailleButtonY/2, #Taille15, 0)
StopDrawing()
EndIf
EndIf
;
;
;
;###traits
If CreateImage(21, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(21))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
LineXY(#PasButton*2, TailleButtonY/2, TailleButtonX-#PasButton*2, TailleButtonY/2, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(22, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(22))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
LineXY(#PasButton*2, TailleButtonY/2, TailleButtonX-#PasButton*2, TailleButtonY/2, 0)
LineXY(#PasButton*2, TailleButtonY/2+1, TailleButtonX-#PasButton*2, TailleButtonY/2+1, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(23, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(23))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
LineXY(#PasButton*2, (TailleButtonY-2)/2, TailleButtonX-#PasButton*2, (TailleButtonY-2)/2, 0)
LineXY(#PasButton*2, (TailleButtonY-2)/2+1, TailleButtonX-#PasButton*2, (TailleButtonY-2)/2+1, 0)
LineXY(#PasButton*2, (TailleButtonY-2)/2+2, TailleButtonX-#PasButton*2, (TailleButtonY-2)/2+2, 0)
LineXY(#PasButton*2, (TailleButtonY-2)/2+3, TailleButtonX-#PasButton*2, (TailleButtonY-2)/2+3, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(24, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(24))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
LineXY(#PasButton*2, (TailleButtonY-4)/2, TailleButtonX-#PasButton*2, (TailleButtonY-4)/2, 0)
LineXY(#PasButton*2, (TailleButtonY-4)/2+1, TailleButtonX-#PasButton*2, (TailleButtonY-4)/2+1, 0)
LineXY(#PasButton*2, (TailleButtonY-4)/2+2, TailleButtonX-#PasButton*2, (TailleButtonY-4)/2+2, 0)
LineXY(#PasButton*2, (TailleButtonY-4)/2+3, TailleButtonX-#PasButton*2, (TailleButtonY-4)/2+3, 0)
LineXY(#PasButton*2, (TailleButtonY-4)/2+4, TailleButtonX-#PasButton*2, (TailleButtonY-4)/2+4, 0)
LineXY(#PasButton*2, (TailleButtonY-4)/2+5, TailleButtonX-#PasButton*2, (TailleButtonY-4)/2+5, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(25, TailleButtonX, TailleButtonY )
If StartDrawing(ImageOutput(25))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
LineXY(#PasButton*2, (TailleButtonY-6)/2, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+1, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+1, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+2, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+2, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+3, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+3, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+4, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+4, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+5, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+5, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+6, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+6, 0)
LineXY(#PasButton*2, (TailleButtonY-6)/2+7, TailleButtonX-#PasButton*2, (TailleButtonY-6)/2+7, 0)
StopDrawing()
EndIf
EndIf
;
;
;
;###formes
If CreateImage(31, TailleButtonX, TailleButtonY ) ;carré
If StartDrawing(ImageOutput(31))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Box((TailleButtonX-TailleButtonX/2.5)/2,(TailleButtonY-TailleButtonY/2.5)/2,TailleButtonX/2.5,TailleButtonY/2.5,0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(32, TailleButtonX, TailleButtonY ) ;rectangle
If StartDrawing(ImageOutput(32))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Box((TailleButtonX-TailleButtonX/1.3)/2,(TailleButtonY-TailleButtonY/2.5)/2,TailleButtonX/1.3,TailleButtonY/2.5,0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(33, TailleButtonX, TailleButtonY ) ;rond
If StartDrawing(ImageOutput(33))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
FrontColor(RGB(0,0,0)) ; noir
Ellipse((TailleButtonX-TailleButtonX/16+1)/2,(TailleButtonY-TailleButtonY/16+1)/2, 12, 12, 0)
StopDrawing()
EndIf
EndIf
;
If CreateImage(34, TailleButtonX, TailleButtonY ) ;ellipse
If StartDrawing(ImageOutput(34))
Box(0,0,50,50, RGB(221,221,221)) ; fond bouton gris
Ellipse((TailleButtonX-TailleButtonX/10+4)/2,(TailleButtonY-TailleButtonY/17+1)/2, 17, 10, 0)
StopDrawing()
EndIf
EndIf
;
;############################################################################## fin creer images boutons ################
;********************************************************************************************************
CurrentColor = $000000
CurrentMode = #ChxButtonDflt
CreateImage(#IMAGE_Color, 35, 35, 24)
CreateImage(#IMAGE_Content, Larg+TailleButtonX-#PasButton*2, Haut-#PasButton*5, 24)
If OpenWindow(0, 0, 0, Larg+TailleButtonX-#PasButton*10, Haut, #Title, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
CanvasGadget(#GADGET_Canvas, 0+TailleButtonX+#PasButton,0,Larg-TailleButtonX,Haut, #PB_Canvas_ClipMouse)
TextGadget(#GADGET_PosX, 2, 0, TailleButtonX, TailleButtonY/2, "PosX") ;positionX
TextGadget(#GADGET_PosY, 2, TailleButtonY/2, TailleButtonX, TailleButtonY/2, "PosY") ;positionY
ButtonImageGadget(#GADGET_Color, 2, TailleButtonY, TailleButtonX, TailleButtonY, ImageID(#IMAGE_Color))
GadgetToolTip(#GADGET_Color, #ChxCol)
ButtonImageGadget(#GADGET_Brush1, 2, TailleButtonY*2, TailleButtonX, TailleButtonY, ImageID(11), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Brush2, 2, TailleButtonY*3, TailleButtonX, TailleButtonY, ImageID(12), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Brush3, 2, TailleButtonY*4, TailleButtonX, TailleButtonY, ImageID(13), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Brush4, 2, TailleButtonY*5, TailleButtonX, TailleButtonY, ImageID(14), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Brush5, 2, TailleButtonY*6, TailleButtonX, TailleButtonY, ImageID(15), #PB_Button_Toggle)
GadgetToolTip(#GADGET_Brush1,#Outil1):GadgetToolTip(#GADGET_Brush2,#Outil1):GadgetToolTip(#GADGET_Brush3,#Outil1):GadgetToolTip(#GADGET_Brush4,#Outil1):GadgetToolTip(#GADGET_Brush5,#Outil1)
ButtonImageGadget(#GADGET_Line1, 2, TailleButtonY*7, TailleButtonX, TailleButtonY, ImageID(21), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Line2, 2, TailleButtonY*8, TailleButtonX, TailleButtonY, ImageID(22), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Line3, 2, TailleButtonY*9, TailleButtonX, TailleButtonY, ImageID(23), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Line4, 2, TailleButtonY*10, TailleButtonX, TailleButtonY, ImageID(24), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Line5, 2, TailleButtonY*11, TailleButtonX, TailleButtonY,ImageID(25), #PB_Button_Toggle)
GadgetToolTip(#GADGET_Line1,#Outil2):GadgetToolTip(#GADGET_Line2,#Outil2):GadgetToolTip(#GADGET_Line3,#Outil2):GadgetToolTip(#GADGET_Line4,#Outil2):GadgetToolTip(#GADGET_Line5,#Outil2)
ButtonImageGadget(#GADGET_BoxBox, 2, TailleButtonY*12, TailleButtonX, TailleButtonY, ImageID(31), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Box, 2, TailleButtonY*13, TailleButtonX, TailleButtonY, ImageID(32), #PB_Button_Toggle)
GadgetToolTip(#GADGET_BoxBox, #Outil_BoxBox):GadgetToolTip(#GADGET_Box ,#Outil_Box)
ButtonImageGadget(#GADGET_CircleCircle, 2, TailleButtonY*14, TailleButtonX, TailleButtonY, ImageID(33), #PB_Button_Toggle)
ButtonImageGadget(#GADGET_Circle, 2, TailleButtonY*15, TailleButtonX, TailleButtonY, ImageID(34), #PB_Button_Toggle)
GadgetToolTip(#GADGET_CircleCircle,#Outil_CircleCircle):GadgetToolTip(#GADGET_Circle,#Outil_Circle)
; ButtonGadget(#GADGET_Triangle, 2, TailleButtonY*13, TailleButtonX, TailleButtonY, "Triangle", #PB_Button_Toggle)
ButtonGadget(#GADGET_Fill, 2, TailleButtonY*16, TailleButtonX, TailleButtonY, "Remplir", #PB_Button_Toggle)
ButtonGadget(#GADGET_Clear, 2, TailleButtonY*17, TailleButtonX, TailleButtonY, "Effacer")
ButtonGadget(#GADGET_Load, 2, TailleButtonY*19, TailleButtonX, TailleButtonY, "Charger")
ButtonGadget(#GADGET_Save, 2, TailleButtonY*20, TailleButtonX, TailleButtonY, "Enregistrer")
SetGadgetState(#ChxButtonDflt, 1)
SetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Cursor, #PB_Cursor_Cross)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If x<0:x=0:EndIf:If y<0:y=0:EndIf
SetGadgetText (#GADGET_PosX,"X: "+Str(x))
SetGadgetText (#GADGET_PosY,"Y: "+Str(y))
Select EventGadget()
Case #GADGET_Canvas
X = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseX)
Y = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseY)
Type = EventType()
Select EventType()
Case #PB_EventType_LeftButtonDown
;
; This stores the current content of the CanvasGadget in #IMAGE_Content,
; so it can be re-drawn while the mouse moves
;
If StartDrawing(ImageOutput(#IMAGE_Content))
DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
StopDrawing()
EndIf
StartX = X
StartY = Y
DrawAction(X, Y, EventType())
Case #PB_EventType_LeftButtonUp
DrawAction(X, Y, EventType())
Case #PB_EventType_MouseMove
If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
DrawAction(X, Y, EventType())
EndIf
EndSelect
Case #GADGET_Color
CurrentColor = ColorRequester(CurrentColor)
If StartDrawing(ImageOutput(#IMAGE_Color))
Box(0,0, 35, 35, CurrentColor)
StopDrawing()
SetGadgetAttribute(#GADGET_Color, #PB_Button_Image, ImageID(#IMAGE_Color))
EndIf
Case #GADGET_Brush1, #GADGET_Brush2, #GADGET_Brush3, #GADGET_Brush4, #GADGET_Brush5, #GADGET_Line1,#GADGET_Line2,#GADGET_Line3, #GADGET_Line4, #GADGET_Line5,#GADGET_BoxBox, #GADGET_Box, #GADGET_CircleCircle, #GADGET_Circle, #GADGET_Fill ;#GADGET_Triangle;;gère la sélection de l'outil
EventGadget = EventGadget()
For Gadget = #GADGET_Brush1 To #GADGET_Fill
If Gadget = EventGadget
SetGadgetState(Gadget, 1)
Else
SetGadgetState(Gadget, 0) ; unset the state of all other gadgets
EndIf
Next Gadget
CurrentMode = EventGadget
Case #GADGET_Clear
If StartDrawing(CanvasOutput(#GADGET_Canvas))
Box(0, 0, Larg-TailleButtonX-#PasButton*2, Haut-#PasButton*5, $FFFFFF)
StopDrawing()
EndIf
Case #GADGET_Load
File$ = OpenFileRequester("Charger l'image...", "", "JPEG Images|*.jpg|All Files|*.*", 0)
If File$
If LoadImage(#IMAGE_LoadSave, File$)
If StartDrawing(CanvasOutput(#GADGET_Canvas))
Box(0, 0, Larg-TailleButtonX-#PasButton*2, Haut-#PasButton*5, $FFFFFF)
DrawImage(ImageID(#IMAGE_LoadSave), 0, 0)
StopDrawing()
EndIf
FreeImage(#IMAGE_LoadSave)
Else
MessageRequester(#TitleMain, "Impossible de charger l'image: " + File$)
EndIf
EndIf
Case #GADGET_Save
File$ = SaveFileRequester("Enregistrer l'image...", File$, "JPEG Images|*.jpg|All Files|*.*", 0)
If File$ And (FileSize(File$) = -1 Or MessageRequester("CanvasGadget", "Overwrite this file? " + File$, #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes)
If CreateImage(#IMAGE_LoadSave, Larg-TailleButtonX-#PasButton*2, Haut-#PasButton*5, 24) And StartDrawing(ImageOutput(#IMAGE_LoadSave))
DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
StopDrawing()
If SaveImage(#IMAGE_LoadSave, File$+".jpg", #PB_ImagePlugin_JPEG) = 0
MessageRequester(#TitleMain, "Impossible d'enregistrer l'image: " + File$)
EndIf
FreeImage(#IMAGE_LoadSave)
EndIf
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
1.