Ecrire dans une OPENWINDOW
Ecrire dans une OPENWINDOW
Bonjour
j'ai écrit un mini-programme d'essai en ouvrant une console- avec OPENCONSOLE(...) - et en utilisant PRINTN() pour y écrire divers textes. Le tout en ayant "coloré" la console en jaune et les textes en bleu .
Bon, maintenant, j'ai ouvert une fenêtre jaune - avec OPENWINDOW(...) et SETWINDOWCOLOR(...) - et je voudrais y écrire les mêmes textes en bleu. Mais je n'arrive pas à trouver par quel mot-clé remplacer "PRINTN()"
Si quelqu'un(e) sait comment faire, je suis preneur !
Merci par avance
Cordialement
SosPel
j'ai écrit un mini-programme d'essai en ouvrant une console- avec OPENCONSOLE(...) - et en utilisant PRINTN() pour y écrire divers textes. Le tout en ayant "coloré" la console en jaune et les textes en bleu .
Bon, maintenant, j'ai ouvert une fenêtre jaune - avec OPENWINDOW(...) et SETWINDOWCOLOR(...) - et je voudrais y écrire les mêmes textes en bleu. Mais je n'arrive pas à trouver par quel mot-clé remplacer "PRINTN()"
Si quelqu'un(e) sait comment faire, je suis preneur !
Merci par avance
Cordialement
SosPel
Re: Ecrire dans une OPENWINDOW
bonjour, tu ne peux pas écrire avec une openwindow directement(ah si on peux mais c'est pas le mieux), tu dois soit utiliser des gadgets tels que textgadget ou un canvas gadget/openwindowedscreen dans le quel tu pourra dessiner avec drawtext par exemple .
Dernière modification par case le jeu. 16/sept./2021 19:17, modifié 1 fois.
Re: Ecrire dans une OPENWINDOW
Apparemment, il y a un bug avec SetWindowColor()
que l'on peut résoudre comme ça:
Il faut eviter d'ecrire dans la fenêtre à cause du "repaint", il vaut mieux utiliser un gadget fait pour cela, le imagegadget:
M.
Code : Tout sélectionner
#Fenetre = 0
If OpenWindow(#Fenetre, 0, 0, 220, 100, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; SetWindowColor(#Fenetre,#Yellow) ; BUG si on décommente
If StartDrawing(WindowOutput(#Fenetre))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10,10,"ok",#Blue)
StopDrawing()
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Code : Tout sélectionner
#Fenetre = 0
If OpenWindow(#Fenetre, 0, 0, 220, 100, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(#Fenetre,#Yellow)
Repeat
If StartDrawing(WindowOutput(#Fenetre))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10,10,"ok",#Blue)
StopDrawing()
EndIf
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 200, 200, "DrawText Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Transparent)
Box(0, 0, 200, 200, RGB(255, 255, 205))
For i = 1 To 30
DrawText(Random(200), Random(200), "Hello World!", RGB(Random(255), Random(255), Random(255)))
Next i
StopDrawing()
ImageGadget(0, 0, 0, 200, 200, ImageID(0))
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Re: Ecrire dans une OPENWINDOW
@case et @Mesa
merci à vous deux pour vos réponses
Bon, j'ai bien compris qu'il n'y a pas d'équivalent à "PRINTN()" dans une "OPENWINDOW()" qui , elle, m'a l'air d'être utile pour de courtes phrases ou pour des objets graphiques.
Or je manipule surtout beaucoup de résultats de calculs et la "CONSOLE()" les accepte sans sourciller. Par contre je la percevais comme esthétiquement moins "souple" qu'une "OPENWINDOW()", mais ça n'a pas l'air d'être le cas . Je vais donc en rester à mes listes de calculs "consolées"
En tous cas, merci de m'avoir appris quelques rudiments d'utilisation des "OPENWINDOW()" !
Cordialement,
SosPel
merci à vous deux pour vos réponses
Bon, j'ai bien compris qu'il n'y a pas d'équivalent à "PRINTN()" dans une "OPENWINDOW()" qui , elle, m'a l'air d'être utile pour de courtes phrases ou pour des objets graphiques.
Or je manipule surtout beaucoup de résultats de calculs et la "CONSOLE()" les accepte sans sourciller. Par contre je la percevais comme esthétiquement moins "souple" qu'une "OPENWINDOW()", mais ça n'a pas l'air d'être le cas . Je vais donc en rester à mes listes de calculs "consolées"
En tous cas, merci de m'avoir appris quelques rudiments d'utilisation des "OPENWINDOW()" !
Cordialement,
SosPel
Re: Ecrire dans une OPENWINDOW
C'est dommage, parce qu'avec une petite procedure maison, on y arrive assez facilement:
M.
Code : Tout sélectionner
#Fenetre = 0
#Image = 0
#ImageGadget = 0
w=800
h=600
CoulFond=RGB(255, 255, 205);jaune
Global CoulText = #Blue
Global x=5, y=5
Procedure PrintN2(Text$)
marge = 3
StartDrawing(ImageOutput(#Image))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(x, y, Text$, CoulText)
y=y+TextHeight("Wg")+marge
StopDrawing()
SetGadgetState(#ImageGadget,ImageID(#Image))
EndProcedure
If OpenWindow(#Fenetre, 0, 0, w, h, "DrawText Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(#Image, w, h) And StartDrawing(ImageOutput(#Image))
DrawingMode(#PB_2DDrawing_Transparent)
Box(0, 0, w, h, CoulFond); Fond jaune
StopDrawing()
ImageGadget(#ImageGadget, 0, 0, w, h, ImageID(#Image))
EndIf
PrintN2("Text1")
PrintN2("Text2")
PrintN2("Text3")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Re: Ecrire dans une OPENWINDOW
@Mesa
Ahhh ??? là, ton utilitaire ressemble bien à ce que je souhaitais
Je vais bien regarder sa faisabilité "pratique" pour mes sorties de calculs car, a priori, ça doit pouvoir se faire.
Si ça colle, j'en ferai un usage immodéré et je t'en informerai !
En tous cas, merci pour ta contribution
Cordialement,
Sospel
Ahhh ??? là, ton utilitaire ressemble bien à ce que je souhaitais
Je vais bien regarder sa faisabilité "pratique" pour mes sorties de calculs car, a priori, ça doit pouvoir se faire.
Si ça colle, j'en ferai un usage immodéré et je t'en informerai !
En tous cas, merci pour ta contribution
Cordialement,
Sospel
Re: Ecrire dans une OPENWINDOW
Et s'il y a beaucoup de ligne à afficher alors il faut prendre un autre gadget, qui est fait pour cela et c'est encore plus simple.
Code : Tout sélectionner
#Fenetre = 0
#EditorGadget = 0
w=800
h=600
CoulFond=RGB(255, 255, 205);jaune
CoulText = #Blue
x=5
y=5
Procedure PrintN2(Text$)
AddGadgetItem(#EditorGadget,-1,Text$)
EndProcedure
If OpenWindow(#Fenetre, 0, 0, w, h, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(#EditorGadget, x, y, w-x-x, h-y-y , #PB_Editor_WordWrap)
SetGadgetColor(#EditorGadget, #PB_Gadget_FrontColor, CoulText)
SetGadgetColor(#EditorGadget, #PB_Gadget_BackColor, CoulFond)
PrintN2("Text1")
PrintN2("Text2")
PrintN2("Text3")
For i=4 To 200
PrintN2("Text"+Str(i))
Next i
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Re: Ecrire dans une OPENWINDOW
@ Mesa
Bon, là, c'est encore mieux !
Encore un post, et je m'attends à une "OPENWINDOW" en couleurs, multi-textes et multi-graphes en 3D
Plaisanterie mise à part, j'ai maintenant la solution pour remplacer par ta procédure mes fenêtres "consolées" . Et en prime, j'apprends plein de choses sur les "Gadjets".
Encore merci
Cordialement
SosPel
Bon, là, c'est encore mieux !
Encore un post, et je m'attends à une "OPENWINDOW" en couleurs, multi-textes et multi-graphes en 3D
Plaisanterie mise à part, j'ai maintenant la solution pour remplacer par ta procédure mes fenêtres "consolées" . Et en prime, j'apprends plein de choses sur les "Gadjets".
Encore merci
Cordialement
SosPel