Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LONGUEUR EN PIXEL D'UNE CHAINE DE CARACTERE


Information sur la source

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

Commentaires et avis

signaler à un administrateur
Commentaire de akina le 03/09/2005 12:40:52

exactement ce qu'il me fallait.!merci

signaler à un administrateur
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 ;)

signaler à un administrateur
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

signaler à un administrateur
Commentaire de jrbleboss le 03/09/2005 19:49:25

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

JRB

signaler à un administrateur
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.

signaler à un administrateur
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

signaler à un administrateur
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.

signaler à un administrateur
Commentaire de NHenry le 05/09/2005 08:23:59

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).

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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 ?

signaler à un administrateur
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

signaler à un administrateur
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

signaler à un administrateur
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.

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 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 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é Mettre du texte avant userform [ par lenemmasque ] Bonjour, Je souhaiterais ajouter du texte avant et après le userform que j'imprime.Ca donnerait, sur ma feuille :   - [<font color="#000 [VB6]Insérer du texte dans une cellule d'un Calendar [ par ryukat666 ] Bonjour, j'ai besoin d'insérer du texte dans les cellules d'un Calendar et j'aurais voulu savoir si c'était possible. Si c'est impossible, il me reste Lire fichier texte ou ini entre les balises [ par ELCouz ] salut,je travail avec des gros fichiers texte souvent presque 5-6 mb ,, jaimerais savoir comment recuper le texte entre deux balises...mes fichiers te Stocker des variables dans un fichier texte [ par Halarin ] Bonjour, Je cherche désèspérement le moyen de stocker des variables dans un fichier .txt et que au lancement du programme, il vérifie ces variables et texte qui suit la souris sous VBA [ par Beginner37 ] J'ai cherché sans succès un programme sous VBA qui me permettrait de faire suivre le pointeur de la souris avec un texte , une image. Avez-vous quelqu


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.