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

Signaler
Messages postés
70
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
29 septembre 2018
-
Zermelo
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
-
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é.

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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.
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
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
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
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)
Messages postés
70
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
29 septembre 2018

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
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
À quoi est-vous arrivé ?
cs_roro69
Messages postés
70
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
29 septembre 2018
> Zermelo
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017

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
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13 > cs_roro69
Messages postés
70
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
29 septembre 2018

Très bien.
Dans ce cas, veuillez déclaré "Résolu" ce sujet.
Cordialement.