Fenetre de Texte - Retour à la ligne
Publié : mar. 26/août/2008 12:35
Bonjour à tous,
Pour un programme j'ai fait un script qui me permet d'ajouter du texte sur un sprite et le texte est censé aller à la ligne tout seul quand sa longeur est trop grande pour la largeur du sprite. Mais il y a beaucoup de bugs j'aimerais savoir ce qui ne va pas avec cette partie retour à la ligne ...
Pour un programme j'ai fait un script qui me permet d'ajouter du texte sur un sprite et le texte est censé aller à la ligne tout seul quand sa longeur est trop grande pour la largeur du sprite. Mais il y a beaucoup de bugs j'aimerais savoir ce qui ne va pas avec cette partie retour à la ligne ...
Code : Tout sélectionner
Procedure TexteFenetre(Fenetreid,text$)
TexteId = Fenetreid+100
;chargement des polices
LoadFont(2,"Courrier News",8)
largeur = SpriteWidth(Fenetreid)-10
hauteur = SpriteHeight(Fenetreid)-10
CreateSprite(Textid,largeur+10,hauteur+10)
StartDrawing(SpriteOutput(Textid))
For i = 30 To (hauteur+10)
couleur.f = 100+(i/(hauteur+10)*155)
If couleur>255:couleur = 255:EndIf
Line(0,i,largeur+10,0,RGB(255,couleur,couleur))
Next i
FrontColor(RGB(50,0,0))
DrawingMode(1)
DrawingFont(FontID(2))
texte$ = text$ + " "
largeurTexte = TextWidth(texte$)
nombre_ligne = Int(largeurTexte/largeur)+1
nombre_car = Int(Len(texte$)/nombre_ligne)+1
For i = 1 To nombre_ligne
If Right(ajout$+Mid(texte$,(i-1)*nombre_car+1,nombre_car),1) =" "
DrawText(5,30+i*20,ajout$+Mid(texte$,(i-1)*nombre_car+1,nombre_car))
ajout$ = ""
Else
nombre_mots = CountString(ajout$+Mid(texte$,(i-1)*nombre_car+1,nombre_car)," ")+1
rejet$ = StringField(ajout$+Mid(texte$,(i-1)*nombre_car+1,nombre_car),nombre_mots," ")
DrawText(5,30+i*20,Left(ajout$+Mid(texte$,(i-1)*nombre_car+1,nombre_car),Len(Mid(texte$,(i-1)*nombre_car+1,nombre_car))-Len(rejet$)))
ajout$ = rejet$
EndIf
Next
StopDrawing()
EndProcedure