Page 1 sur 1
Mon premier code purebasic
Publié : dim. 28/juil./2013 8:37
par Michalon
Bonjour
je m'appelle marc je suis nouveau ici , j'ai découvert Purebasic il y a quelques semaines , j'ai téléchargé la démo 5.11 , j'ai commencer par regarder les différents exemples fourni avec le logiciel et j'ai crée un début de code pour afficher des images , j'ai lu l'aide pas à pas , j'attends vos conseils c'est mon premier code .
Je me suis servi d'un exemple fourni avec le logiciel et avec l'aide pour comprendre chaque commande .
Code : Tout sélectionner
;-------- Exemple pour afficher des image en PureBasic 5.11
;---------Code écris par Mr Michalon
; Constantes pour le bouton , le canevas et l'image
Enumeration
#Canevas
#Mon_image
#Bouton_charger
EndEnumeration
; pour le Chargement d'une image Jpeg
UseJPEGImageDecoder()
; Onverture de la fenetre et de la fenetre pour l'image
If OpenWindow(0, 0, 0, 1024,768 , "Gestion d' image ", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(#Canevas, 50, 10, 1024, 768,#PB_Calendar_Borderless)
ButtonGadget(#Bouton_charger, 0, 335, 50, 25, "Charger")
; Gestion du programme
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case #Bouton_charger; on va charger l'image
File$ = OpenFileRequester("Charge une image ...", "", "JPEG Images|*.jpeg|All Files|*.*", 0)
If File$
If LoadImage( #Mon_image, File$)
If StartDrawing(CanvasOutput(#Canevas))
Box(0, 0, 380, 380, $FFFFFF)
DrawImage(ImageID( #Mon_image), 0, 0)
StopDrawing()
EndIf
FreeImage( #Mon_image)
Else
MessageRequester("Erreur ", "Impossible de charger une image : " + File$)
EndIf
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Re: Mon premier code purebasic
Publié : dim. 28/juil./2013 9:41
par Ar-S
Bienvenue à toi.
Je ne vois rien de bien particulier dans ton code, il fonctionne.
Eventuellement remplace *.jpeg par *.jpg car la plupart des images se terminent par .jpg
Re: Mon premier code purebasic
Publié : dim. 28/juil./2013 10:46
par Backup
mes commentaires sont dans le code
Code : Tout sélectionner
Select EventGadget()
Case #Bouton_charger; on va charger l'image
File$ = OpenFileRequester("Charge une image ...", "", "JPEG Images|*.jpeg|All Files|*.*", 0)
; If File$ <<<<<<<<<< ne sert a rien !!
If LoadImage( #Mon_image, File$) ; <<<<<<<<<<< ce IF suffit :)
If StartDrawing(CanvasOutput(#Canevas))
Box(0, 0, 380, 380, $FFFFFF)
DrawImage(ImageID( #Mon_image), 0, 0)
StopDrawing()
;******** j'ai deplacé ce bloc ,car le teste doit se faire au chargement de ton image ( Loadimage()) ... pas au fait d'avoir quelques choses dans ta variable File$ (dont le test IF ne servait a rien ici ) )
Else
MessageRequester("Erreur ", "Impossible de charger une image : " + File$)
End
; ************
EndIf
;; FreeImage( #Mon_image) ;<<<<<<<<<<< attention avec cette commande , en la libérant , tu ne pourra plus utiliser ton image par la suite ....
; les images sont de toute façon libérés automatiquement en quittant le prg
EndIf
; EndIf
EndSelect; EPB
lorsque tu fais
Code : Tout sélectionner
File$ = OpenFileRequester("Charge une image ...", "", "JPEG Images|*.jpeg|All Files|*.*", 0)
If File$ .....................
tu test si File$ contient quelque chose ... bon ça peut etre utile pour vérifier un chemin par exemple ou une extention ....
mais ici tu cherches a charger une image
quoiqu'il arrive ce qui suit :
est là pour vérifier que de toutes façons , une image est bien chargé !!
donc ta vérification préalable deviens un doublon inutile

puisque si Files ne contenait pas de chemin vers une image reconnue ... ça ne la chargerai pas ...
d'ou l'interet de mettre le test
Code : Tout sélectionner
Else
MessageRequester("Erreur ", "Impossible de charger une image : " + File$)
End
dans ce IF là

Re: Mon premier code purebasic
Publié : dim. 28/juil./2013 11:37
par salutcava
Bonjour/bonsoir
afin que les images d'extensions JPEG et JPG soient visible par le filtre "JPEG Images", il faut remplacer
Code : Tout sélectionner
OpenFileRequester("Charge une image ...", "", "JPEG Images|*.jpeg|All Files|*.*", 0)
par
Code : Tout sélectionner
OpenFileRequester("Charge une image ...", "", "JPEG Images|*.jpeg;*.jpg|All Files|*.*", 0)
Voila, c'est tout ce que j'avais à dire
Au revoir.
Re: Mon premier code purebasic
Publié : dim. 28/juil./2013 17:56
par Michalon
Bonjour
merci pour vos conseils
Re: Mon premier code purebasic
Publié : dim. 04/août/2013 9:44
par Michalon
Bonjour
je suis entrain de refaire mon code
Ayant la version démo est ce que je peux utiliser les procédures?
Re: Mon premier code purebasic
Publié : dim. 04/août/2013 9:51
par falsam
Michalon a écrit :Ayant la version démo est ce que je peux utiliser les procédures?
Bonjour. Bien sur que tu peux.Bon code:)
Un exemple avec des procédures.
Code : Tout sélectionner
Enumeration
#Mainform
#Bouton
EndEnumeration
Define.l Event, WEvent, MEvent, GEvent, TEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
ButtonGadget(#Bouton, 20, 20, 80, 22, "Clique Moi")
EndProcedure
Procedure Welcome()
MessageRequester("Information", "Bonjour et bienvenue"+#CRLF$+
"Les procédures fonctionnent"+#CRLF$+
"mais ce n'est pas une raison"+#CRLF$+
"pour ne pas acheter une licence :)")
EndProcedure
Open_MainForm()
Repeat
Event = WaitWindowEvent()
WEvent = EventWindow() ;Fenetre qui a provoquée l'évenement
MEvent = EventMenu() ;Menu qui a provoquée l'évenement
GEvent = EventGadget(); Gadget qui a provoquée l'évenement
TEvent = EventType() ;Type d'évenement (Ex : Focus) qui a provoquée l'évenement
Select Event
Case #PB_Event_Gadget
Select GEvent
Case #Bouton
Welcome()
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Re: Mon premier code purebasic
Publié : dim. 04/août/2013 10:35
par Michalon
merci falsam
faut'il obligatoirement mettre les procedures avant la boucle principale repeat/until
Re: Mon premier code purebasic
Publié : dim. 04/août/2013 11:19
par Backup
non , il faut mettre les procedures AVANT leur appel !!
Code : Tout sélectionner
procedure toto ()
debug "toto"
endprocedure
; l'appel
toto ()
ou alors mettre un Declare pour pouvoir mettre tes procedures en fin de code, (donc apres l'appel)
Code : Tout sélectionner
Declare toto ()
; l'appel
toto ()
; ****** zone des procedures **********
procedure toto ()
debug "toto"
endprocedure
Re: Mon premier code purebasic
Publié : dim. 04/août/2013 14:44
par falsam
Michalon a écrit :faut'il obligatoirement mettre les procedures avant la boucle principale repeat/until
Tu peux mettre les procédures aprés la boucle evenementielle à condition comme le précise Dobro de déclarer les procédures en début de programmes.
Ce qui donne avec mon code précédent
Code : Tout sélectionner
Enumeration
#Mainform
#Bouton
EndEnumeration
Define.l Event, WEvent, MEvent, GEvent, TEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
;-Déclaration de procédures
Declare Open_MainForm()
Declare Welcome()
;-Début du traitement
Open_MainForm()
;-Boucle évenementielle
Repeat
Event = WaitWindowEvent()
WEvent = EventWindow() ;Fenetre qui a provoquée l'évenement
MEvent = EventMenu() ;Menu qui a provoquée l'évenement
GEvent = EventGadget(); Gadget qui a provoquée l'évenement
TEvent = EventType() ;Type d'évenement (Ex : Focus) qui a provoquée l'évenement
Select Event
Case #PB_Event_Gadget
Select GEvent
Case #Bouton
Welcome()
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
;- Les procédures
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
ButtonGadget(#Bouton, 20, 20, 80, 22, "Clique Moi")
EndProcedure
Procedure Welcome()
MessageRequester("Information", "Bonjour et bienvenue"+#CRLF$+
"Les procédures fonctionnent"+#CRLF$+
"mais ce n'est pas une raison"+#CRLF$+
"pour ne pas acheter une licence :)")
EndProcedure
J'ai commenté la structure du code de telle maniére que le plan du code apparait à droite de ton éditeur dans l'onglet Procédure. Pour cela il suffit de commenter avec un
;- au lieu d'un
;. Bon code

Re: Mon premier code purebasic
Publié : dim. 04/août/2013 18:08
par Backup
falsam a écrit :J'ai commenté la structure du code de telle maniére que le plan du code apparait à droite de ton éditeur dans l'onglet Procédure. Pour cela il suffit de commenter avec un
;- au lieu d'un
;. Bon code

a noter aussi que
;{ permet d'ouvrir un bloc pliable <<<<< debut de bloc + commentaire
;....
;....
;....
;} permet de finir le bloc pliable <<<<< fin de bloc +commentaire
et certains editeur .... ? (Japbe,EPB )
permet de faire un bloc + un signet
;{- test <<< sera present dans l'onglet a droite
;
;
;
;}