begin process at 2012 02 13 21:00:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > LONGUEUR EN PIXEL D'UNE CHAINE DE CARACTERE

LONGUEUR EN PIXEL D'UNE CHAINE DE CARACTERE


 Information sur la source

Note :
Aucune note
Catégorie :Texte Source .NET ( DotNet ) Classé sous :longeur, pixel, texte Niveau :Débutant Date de création :03/09/2005 Vu :17 614

Auteur : slhuilli

Ecrire un message privé
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

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

  • 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
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 !!


 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture VBA MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source avec une capture MESURER LA TAILLE D'UNE CHAÎNE EN PIXELS [MODULE DE CLASSE] par PCPT
Source avec Zip Source avec une capture LIVE (( TRAITEMENT DE TEXTE )) par crossblade
Source avec Zip Source avec une capture AH VALA UN BON EDITEUR DE TEXTE : NODE EDITOR (PETITE MISE A... par Zeratul456

Commentaires et avis

Commentaire de akina le 03/09/2005 12:40:52

exactement ce qu'il me fallait.!merci

Commentaire de Clem le 03/09/2005 14:10:25

perso je me sers de l'api GetTextExtentPoint32, un peu plus fatiguant, mais plus rapide au moins ;)

Commentaire de DARKSIDIOUS le 03/09/2005 15:19:08 administrateur CS

Tiens, on a réactiver le code ?

Donc pour tout ceux à qui ca interesse de connaitre la largeur du texte, je vous conseille plutôt d'utiliser :
Graphics.MeasureString(texte, font)

Voilà pourquoi j'avais désactivé le code...

DarK Sidious

Commentaire de jrbleboss le 03/09/2005 19:49:25

Oui c'est un peu bourrin comme technique mais c pas con.

JRB

Commentaire de sebmafate le 04/09/2005 20:28:35 administrateur CS

le mot clé noting n'existe pas en VB... c'est Nothing.
Enfin, le Dispose libère toutes les ressources utilisées par l'objet avant de détruire celui-ci. Il faut donc toujours utiliser Dispose à la place de Nothing quand l'objet est Disposable.
Enfin, je trouve que DarkSidious a raison. Il est quand même préférable d'utiliser la méthode MeasureString de l'object System.Drawing.Graphics.

Commentaire de THE VIPER le 04/09/2005 22:48:23

je crois que ca servira pour changer la taille d'un label par raport au text ...
on peut utiliser
label1.autosize = true
et ca sera automatiquement redimentione

Commentaire de sebmafate le 04/09/2005 22:51:48 administrateur CS

mais ca... ce n'est pas nouveau, puisqu'on l'avait déjà en VB6.

Commentaire de NHenry le 05/09/2005 08:23:59 administrateur CS

pour la ligne :
taille_en_pixel_d_une_chaine_de_caractere = label1.width
essaye
return lable1.width
Attention, cela quitte la procédure immédiatement.

Sinon pour graphics, j'avais essayer, mais j'ai eu un pb, s'agit-il d'une fonction shared ? Parce que g pas réussi à y accéder sans devoir créer un objet (me.creategraphics).

Commentaire de slhuilli le 05/09/2005 11:00:53

Effectivement, en recopiant la source chez moi pour la mettre en ligne, j'ai oublié le H de nothing. (effectivement, nous n'avons pas  internet sur nos postes du bureau, question sécurité)
oui, je sais que c'est bourrin mais quand on touche que dalle aux api.... Mais si vous avez une fonction toute faite avec des api, je suis preneur

Commentaire de DARKSIDIOUS le 05/09/2005 11:20:11 administrateur CS

Ben avec API (sous vb6, en se basant sur la feuille courante ) :

Dim pTextSize As POINTAPI
GetTextExtentPoint32 me.hDC, "Salut", Salut, pTextSize

pTextSize stocke alors : en .X = la largeur, en .Y = la hauteur

Et surtout : ca gère la font sélectionnée !!! (car c'est surtout cà qui modifie la largeur d'un texte !!!).

DarK Sidious

Commentaire de christoni le 05/09/2005 13:32:50

Pour ceux qui veulent un exemple sur MeasureString, regardez là :
http://www.codeproject.com/vb/net/MeasureStrings.asp

Commentaire de boursicotteur le 07/09/2005 23:06:21

Je ne travailles pas en .net mais il me semble que ton code donne la largeur du label et non celle du texte écrit sur le label. C'est vraiment pas la même chose.

Pour connaître la largeur d'un mot, j'utilise plutôt la méthode "textwidth" qui est applicable sur des objets Form, PictureBox et Printer mais tu peux toujours jouer d'astuce pour connaître la largeur d'un mot sur un label... Il suffit simplement de créer un picturebox que tu prendras soin de paramétrer de la même façon que ton label (police, taille police, etc) puis d'appliquer la méthode textwidth sur ce picturebox.

Il doit bien y avoir l'équivalent en .net

Commentaire de psycho81 le 11/01/2006 11:25:41

DARKSIDIOUS,
en cherchant des infos sur la fonction GetTextExtentPoint32, j'ai trouvé çà :

<<
La fonction GetTextExtentPoint32 calcule la taille du texte en utilisant comme police celle liée au contexte graphique passé en paramètre. Donc pour que le résultat soit exact, la police de la form doit être la même que celle du label.
>>

à cette adresse : http://vb.developpez.com/faq/?page=Graphisme

Si je comprends bien, en fait c'es tla police du form qui est prise en compte et non la police de l'objet en cours qui est pris pour le calcul ? Ou bien n'ai je pas compris ?

Commentaire de DARKSIDIOUS le 11/01/2006 15:57:48 administrateur CS

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

Commentaire de psycho81 le 11/01/2006 17:12:04

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

Commentaire de psycho81 le 11/01/2006 17:17:29

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.

Commentaire de blq le 08/12/2010 16:25:40

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é !

Commentaire de slhuilli le 08/12/2010 20:07:57

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment connaitre la longueur d'un texte en pixel ? [ par salazar ] J'affiche du texte dans un ListBox, et je souhaite tronquer le texte dès qu'il a atteind une certaine longueur.Cette longueur est liée à la police, au DECOUPAGE D'UN TEXTE SUR UNE LONGEUR DE LIGNE PRÉCISE [ par AVSoft ] Comment decouper une ligne sur un nombre de caractere puis de le mettre a la ligne ainsi de suite.Merci Recuperer la Largeur et la Hauteur de texte en pixel! [ par threadom ] Comment puis je recuperer la largeur et la hauteur finale (en pixel) d'un texte en connaissant la font et la taille ? (Exemple: "Text: BlaBlaBla" "Fon bitmap vers texte [ par arnovb ] bon j'ai cherché sur le forum mais je n'ai pas trouvéje voudrai ouvrir un bitmap en mode texte pour aller tester la couleur de certains pixel à l'inté Longueur en pixel d'un Texte [ par comprateur ] Longueur en pixel d'un Texte:Bonjour, je dois traduire des étiquettes de l'anglais au francais sans dépasser la longueur de l'étiquette d'origine meme affectation de texte à des boutons créés dynamiquement [ par Persons ] BonjourJe débute en vb .netVoila mon pb:Sur une form je dessine un premier bouton, puis j'en crée 20 dynamiquement. Je voudrais savoir comment faire p envoyer un texte par reseau [ par raph1 ] salutJ'ai un "petit" probleme je veux envoyer un texte et un donnée d'un pc a un autre tous cela en vbmerci de votre reponce transformer un fichier excel en un fichier texte avec tabulations [ par huuuuu21 ] Salut les ptits gars,est ce que quelqu'un sait comment sous vb, on peut transformer un fichier excel en un fichier texte avec tabulation ??? voila c'e Centrer une texte [ par sandrine77 ] 'Salut TLM'Voila c'est un code que j'ai trouver sur http://faq.vb.free.fr pour imprimer un texte centrer, mais ma feuille s'imprime vide aucun texte Fenetre Native ! [ par TroXsA ] Bonjour a tous !Je souhaite faire une fenetre (form1) avec une zone de texte (Textbox), je souhaite a l'aide de l'evenement clic recupere le texteexem


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales