Page 1 sur 2
Bug avec DrawText()
Publié : jeu. 25/juil./2013 3:18
par graph100
Bonsoir,
Je voulais savoir si vous aviez le même problème que moi sur le code suivant : le texte dessiné en premier apparait sous le deuxième lors de l'utilisation de caractères spéciaux comme #CRLF$
Code : Tout sélectionner
OpenWindow(0, 0, 0, 500, 500, "test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CanvasGadget(0, 0, 0, 500, 500)
font = LoadFont(#PB_Any, "Arial", 8)
StartDrawing(CanvasOutput(0))
DrawText(0, 0, "Texte de test", #Red, #Blue)
DrawingFont(FontID(font))
DrawText(50, 50, " " + #CRLF$ + #CRLF$ + "HEY", #Green)
StopDrawing()
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
End
Peut-être un soucis d'initialisation de buffer pour des raisons de vitesse ? Dois-je considérer ça comme normal et gérer les caractères spéciaux à part ?
Je parle pas du retour à la ligne ici, je sais que drawtext() n'est pas prévu pour ça.
Re: Bug avec DrawText()
Publié : jeu. 25/juil./2013 6:54
par SPH
"HEYte de"
Re: Bug avec DrawText()
Publié : jeu. 25/juil./2013 7:56
par Ar-S
Perso le Hey apparait bien sous le 1er texte (5.20 b7)
Avec ou sans les #CRLF$ (qui n'ont pas lieu d'être dans un dessin).
Etrange.
Re: Bug avec DrawText()
Publié : ven. 26/juil./2013 3:11
par graph100
c'est normal de voir le "HEY", mais on ne devrai pas voir le reste. Si tu regardes le code, les deux textes ne sont pas dessinés au même endroit.
Re: Bug avec DrawText()
Publié : ven. 26/juil./2013 8:10
par Micoute
Bonjour graph100, si tu essayes le programme qui suit, c'est à dire sans le HEY, ça fait exactement la même chose, c'est peut-être un bug, car le tampon n'a pas été vidé au moment de l'affichage !
Code : Tout sélectionner
OpenWindow(0, 0, 0, 500, 500, "test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CanvasGadget(0, 0, 0, 500, 500)
font = LoadFont(#PB_Any, "Arial", 8)
StartDrawing(CanvasOutput(0))
DrawText(0, 0, "Texte de test", #Red, #Blue)
DrawingFont(FontID(font))
DrawText(50, 50, #CRLF$ + #CRLF$, #Green)
StopDrawing()
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
End
Re: Bug avec DrawText()
Publié : ven. 26/juil./2013 10:54
par Ar-S
Je vois ce que tu veux dire. Effectivement la taille du #CRLF$ contient le 1er texte.
Code : Tout sélectionner
OpenWindow(0, 0, 0, 300, 150, "test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CanvasGadget(0, 0, 0, 300, 150)
font = LoadFont(#PB_Any, "Arial", 14)
T.s = "Texte de test"
;TT.s = #CRLF$+#CRLF$
TT.s = Chr(13)+Chr(13)
StartDrawing(CanvasOutput(0))
DrawingFont(FontID(font))
T1 = DrawText(0, 0, T.s, #Red, #Blue)
T2 = DrawText(0, 50, TT.s , #Green)
StopDrawing()
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
End
Mais je maintiens qu'il ne faut pas confondre un outils de dessin (le canvas) avec un editeur. le chr(13) ou #CRLF$ n'ont pas lieu d'être dans un canvas avec du texte vu que tu dois positionner le texte via des coordonnées.
En tout cas c'est peut-être une histoire de mémoire tampon.
Re: Bug avec DrawText()
Publié : ven. 26/juil./2013 11:44
par GallyHC
Bonjour,
Je vois dans le code :
Mais "#CRLF$" n'est pas egale a "Chr(13)+Chr(13)", mais à "Chr(13)+Chr(10)" (si je ne dit pas de bêtise et pour Windows en tout cas).
Cordialement,
GallyHC
Re: Bug avec DrawText()
Publié : ven. 26/juil./2013 16:30
par Ar-S
GallyHC a écrit :Bonjour,
Je vois dans le code :
Mais "#CRLF$" n'est pas egale a "Chr(13)+Chr(13)", mais à "Chr(13)+Chr(10)" (si je ne dit pas de bêtise et pour Windows en tout cas).
Cordialement,
GallyHC
Pour compléter :
#CR = chr(13)
#LF = chr(10) donc #CRLF$ c'est chr(13) puis chr(10)...
Ce sont les symboles retour à la ligne donc dans les 2 cas le soucis est le même.
Re: Bug avec DrawText()
Publié : sam. 27/juil./2013 22:14
par SPH
Question : que doit faire #CRLF$ normalement ?
Re: Bug avec DrawText()
Publié : sam. 27/juil./2013 23:07
par Ar-S
SPH a écrit :Question : que doit faire #
CRLF$ normalement ?
Re: Bug avec DrawText()
Publié : dim. 28/juil./2013 4:25
par salutcava
Bonjour/bonsoir
CR = Carriage Return : c'est un retour chariot : le curseur d'affichage du texte retourne tout à gauche (déplacement horizontal)
LF = Line Feed : c'est saut de ligne : le curseur d'affichage descend une ligne en dessous (déplacement vertical)
L'association de ces deux caracteres spéciaux permet de faire un retour à la ligne tel que nous l'attendons.
@Graph100 Tu as utilisé quelle version de PB pour avoir un BUG ? Sous la version 5.11 (x86) tout fonctionne comme attendu.
Au revoir.
Re: Bug avec DrawText()
Publié : dim. 28/juil./2013 9:50
par SPH
Ar-S a écrit :SPH a écrit :Question : que doit faire #
CRLF$ normalement ?
Je ne savais pas ce que ca veux dire

Re: Bug avec DrawText()
Publié : dim. 28/juil./2013 10:03
par Ar-S
Et tu verras que dans ta citation le CRLF pointe sur sa définition.
T'es un peu fainéant tout de même, tu tapes CRLF dans google c'est encore plus rapide que de demander.
Re: Bug avec DrawText()
Publié : dim. 28/juil./2013 10:18
par SPH
Ar-S a écrit :Et tu verras que dans ta citation le CRLF pointe sur sa définition.
T'es un peu fainéant tout de même, tu tapes CRLF dans google c'est encore plus rapide que de demander.
Je ne savais meme pas que ca avait une signification
Re: Bug avec DrawText()
Publié : dim. 28/juil./2013 18:11
par SPH
CRLF : ca y est, j'ai fait le rapprochement avec notepad++