Longueur en pixel d'une chaine de caractere

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 721 fois - Téléchargée 31 fois

Contenu du snippet

Ce code permet de mesurer la taille en pixel d'une chaine de caractere. j'en ai eu besoin pour savoir si ma chaine de caractee rentrait dans un label a taille fixe

Source / Exemple :


function taille_en_pixel_d_une_chaine_de_caractere(x as string) as string
dim label1 as label
label1 = new label
label1.text = x
label1.autosize = true
label1.visible=false
me.controls.add(label1)
taille_en_pixel_d_une_chaine_de_caractere = label1.width
label1 = noting
label1.dispose
end function

Conclusion :


Pour etre honnete, je comprends pas la différence entre
label1 = noting
label1.dispose

si qq'un peut m'expliquer. En tout ca ca marche !!

A voir également

Ajouter un commentaire

Commentaires

Utilisateur anonyme
bonsoir, j'ai posé cette source en sachant pertinemment qu'il y avait mieux a faire.... Malheuresement ce probleme ne se posera plus puis ... je passe sous java ! Merci pour le complément
Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Cet post date un peu, mais effectivement la méthode la plus simple et rapide est d'utiliser MeasureString()

Comme il n'y avait pas d'exemple précis dans cette discussion, en voici un avec l'objet ListView en affichage "Details", pour redimensionner la largeur d'une colonne

' Déclarations
Dim leGraphic As Graphics = laListView.CreateGraphics
Dim unItem as ListViewItem = Nothing
Dim tailleChaine As Integer = 0

' Ajout d'un nouveau texte dans la liste
unItem = laListView.Items.Add("une chaine de longueur variable...")
' Récupération de la taille
tailleChaine = CInt(leGraphic.MeasureString(unItem.Text, unItem.Font).Width)

' Si la largueur de la colonne est inférieur au texte ajouté, alors
' on met à jour la taille de la colonne pour tout afficher
If tailleChaine > laListView.Columns.Item(0).Width Then laListView.Columns.Item(0).Width = tailleChaine

Ce petit code peut-être complété dans une boucle d'ajout de texte, la largeur affichée de la colonne sera toujours calée sur la plus grande chaine. On peut bien évidement varier et ce caler sur la plus petite... c'est libre court à la créativité !
Messages postés
84
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
17 février 2008

Bon sinon, pour la mesure d'un string, partout je vois que Graphics.MeasureString(texte, font) est la meilleure techniques pour des utilisations non répétitives (et de courts textes). Vu que l'on transforme le texte en bitmap ... si cherche à mesurer la taille en pixel d'un livre entier... on va saturer la mémoire.
Messages postés
84
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
17 février 2008

Ah ok, merci à toi :)

J'ai eu souvent à lire tes codes et, bien que l'envie m'en démange, je n'en ferai pas les louanges, les jedis de l'informatique n'ont qu'a bien se tenir :)

Bon sinon, pour faire chier mon monde (il faut bien être un peu critique aussi), ce code n'est pas standard .NET (API = windows) donc pas compatible sous MONO. On ne devrait donc jamais utiliser d'API sous .NET.

Bon je me tais :x
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
102
Ah non, tu n'as rien compris ;p

Comme dit dans ton texte : "en utilisant comme police celle liée au contexte graphique passé en paramètre", donc si tu lui passe : Picture1.hdc, il utilisera la police de Picture1.hdc et non celle de Form1, et donc, tiendras compte de la taille, du nom, du style de la police, ce qui est quand même bien plus rigoureux que cette source !

DarK Sidious
Afficher les 18 commentaires

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.