Etirer texte dans toute la largeur d'une picturebox [Résolu]

cs_roro69 58 Messages postés vendredi 27 décembre 2002Date d'inscription 13 novembre 2017 Dernière intervention - 27 nov. 2015 à 18:15 - Dernière réponse : Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention
- 2 déc. 2015 à 15:35
Bonjour,

Voici ce que je souhaiterais faire:
Dans une picturebox je dessine du texte avec ce code:

Dim g As Graphics
'je crée le graphiquedans le picturebox
g = pbTrace.CreateGraphics

'Crée un rectangle avec les mesure de la picturebox
Dim rect1 As New Rectangle(0, 0, 199, 199)
' Centre le texte dans le rctangle
Dim stringFormat As New StringFormat()
stringFormat.Alignment = StringAlignment.Center
stringFormat.LineAlignment = StringAlignment.Center

' Dessine le texte dans le rectangle.
g.DrawString(text1, font1, Brushes.Black, rect1, stringFormat)

--Je voudrais que le texte soit étirer sur tout la largeur de ma picturebox.
Merci de votre aide et du temps consacré.
Afficher la suite 

8 réponses

Répondre au sujet
ucfoutu 18022 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par ucfoutu le 27/11/2015 à 19:10
+1
Utile
Bonjour,
cela devra passer par un calcul arithmétique fait sur ces bases :
1) - calcul de la largeur graphique d'un caractère (un seul) de la chaîne à écrire dans la picturebox, sur la base de sa font, sa taille et son style
2) - détermination de la largeur de la picturebox
3) - calcul, à partir de ces données, du nombre maximal de caractères entrant sur une ligne de la picturebox (= largeur picturebox / largeur graphique d'un caractère)
4) calcul du nombre de caractères "espace" à ajouter pour atteindre le nombre maximum déterminé en 3)
5) ajout, entre chaque caractère de la chaîne à écrire, du nombre nécessaire d'espaces (une simple division)
C'est là le prix à payer pour cet "effet"-là, si l'on y tient vraiment. (c'est plutôt CHER pour cette "bébelle").
A noter : cette réponse n'est totalement valable que si l'on choisit d'utiliser une font à échappement fixe (bien évidemment). Pour une Police d'un autre type, c'est bien plus complexe et cela nécessite alors une boucle/test "jusqu'à ce que..."
Voilà (et valable quel que puisse être le langage de développement utilisé).
Bon courage, car tu vas devoir te retrousser les manches pour de bon.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu
Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention - 28 nov. 2015 à 11:59
0
Utile
2
Bonjour cs_roro69.
Vous pourriez vous en sortir en utilisant les valeurs AutoSize et StretchImage de la propriété SizeMode des PictureBox, ainsi que la
méthode CopyFromScreen de l'objet Graphics. J'ai fait des choses de ce genre dans le code-source
http://codes-sources.commentcamarche.net/source/54845-etirement-d-une-image.
Cordialement.
Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention - 29 nov. 2015 à 11:03
Ucfoutu et moi vous avons proposé deux solutions. Avez-vous choisi, avez-vous trouvé une troisième solution, ou avez-vous lâché prise ?
ou tous simplement positionner et dimensionner le graphics par rapport a la picturebox.
Dim rect1 As New Rectangle(me.picturebox.location.x, me.picturebox.location.y, picturebox.width, picturebox.height)
Commenter la réponse de Zermelo
cs_roro69 58 Messages postés vendredi 27 décembre 2002Date d'inscription 13 novembre 2017 Dernière intervention - 29 nov. 2015 à 18:39
0
Utile
3
Bonsoir
Je viens de rentré et de voir vos réponses très instructive.
Je vous remerci pour le temps consacré et l'aide apporté.
Je vais tenter de travailler avec la variable "rectangle"; çà semble une bonne solution; je vous tiendrez au courant pour la suite.
Merci beaucoup

--
Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention - 2 déc. 2015 à 13:37
À quoi est-vous arrivé ?
cs_roro69 58 Messages postés vendredi 27 décembre 2002Date d'inscription 13 novembre 2017 Dernière intervention > Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention - 2 déc. 2015 à 15:25
Bonjour
J'ai réussi grâce à ce code trouvé sur ce site:
http://www.vb-helper.com/howto_net_stretch_text_to_fit.html
Merci
Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention > cs_roro69 58 Messages postés vendredi 27 décembre 2002Date d'inscription 13 novembre 2017 Dernière intervention - 2 déc. 2015 à 15:35
Très bien.
Dans ce cas, veuillez déclaré "Résolu" ce sujet.
Cordialement.
Commenter la réponse de cs_roro69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.