MESURER LA TAILLE D'UNE CHAÎNE EN PIXELS [MODULE DE CLASSE]

Utilisateur anonyme - 12 nov. 2006 à 15:54
cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 - 4 déc. 2008 à 18:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40299-mesurer-la-taille-d-une-chaine-en-pixels-module-de-classe

cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 3
4 déc. 2008 à 18:01
Bonjour:)
'# On créé un DC compatible (avec la résolution, etc)
tVDC.hTmpDC = CreateCompatibleDC(tVDC.hDesktopDC)
' adaptation de la font (objet StdFont vers IFont)
Set oFont = mFont
'# On lie la police a notre DC
tVDC.hOldFont = SelectObject(tVDC.hTmpDC, oFont.hFont)
' destruction du IFont

c'est de la grande classe, vraiment

et la class: (classique)et simple, facile à utilisée, propre, efficace.

Difficile de connaître la quantité de ressources utilisées pour créer un dc.
ça parait en tout cas être une bonne solution pour mesurer.
Je ne sais pas où tu as trouvé ce GetTextExtentPoint32 de derrière les fagots.

eugmpttspcpt
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
3 déc. 2006 à 01:28
Salut PCPT,

depuis le temps que je devais venir voir cette source, c'est chose faite.
Je dirais même : c'est très intéressant !
Bon comme d'hab, ton code est clair et compréhensible (je commence à m'habituer).

Je vais même essayer d'intégrer ta classe à ma source sur le zoom, cela pourrait m'être bénéfique.

Bien que je sois moins bon que toi, je sens que ton code est plus lisible qu'avant (au fur et à mesure de tes sources) et plus performant (dans la façon de coder).
Je te rassure, c'était aussi excellent avant ! lol

Continue comme ça, et bonne prog pour la suite.

@++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 nov. 2006 à 00:13
umm, tous je suppose, pour de bonnes bases (de BD) solides tout au moins
merci :p
++
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
14 nov. 2006 à 22:53
Salut,
Toujours un régale ces(et tes) source qui font avancer les débutants, lol.
Dans les confrères que tu connais, y'en aurai-t-il pas un qui pour lui les bases de données ne sont plus un secret ?
9/10
A+
exploreur
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 nov. 2006 à 16:06
tu parles du classement ou de la qualité (qualité je suppose).
je vais jouer le porte-parole (confrères, reprenez-moi au besoin :p), on a tendance à partager des codes facilement réutilisables, pas forcément "facile" tout court.

impression peut-être due au fait qu'on met à disposition plus d'objets que d'applications...
regarde plus en détail, certaines sources sont parfois sympas et bien coriaces.
(Rey et ses SubClassing, EB et ses DirectX, DarkSidious et ses DC, Clementio et ses AddIn, et j'en passe des sacrés)

t'abuse pas, no souci ^^
Utilisateur anonyme
14 nov. 2006 à 14:36
merci pour la fonction GetFontSize PCPT ;)
juste une petite remarque si je peux me permettre
vous avez tous un tres bon niveau(les administrateurs de VB)
et c'est dommage qu'on voit que des sources pour débutant
c'est tres souvent des sources de niveau 1 que niveau 3 & 2
si j'abuse dis moi le ^^
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 nov. 2006 à 08:40
Bien meilleur ainsi ^^
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 nov. 2006 à 07:26
voilà c'est mis à jour, çà me semble correct ;)
++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 nov. 2006 à 14:53
je regarde çà de près dans la soirée, merci ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 nov. 2006 à 14:23
tu peux récupérer le IFont::hFont de ta propriété Font
et l'affecter à ton hDC (via SelectObject)

regarde ce qui est fait là (dépot exprès pour toi ^^) :
http://www.vbfrance.com/code.aspx?ID=40307
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 nov. 2006 à 13:21
2ème ligne précédent post, .FreehDC = Picture1.hDC évidemment.
(décidément c'est pas mon jour ^^)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 nov. 2006 à 12:58
on veut calculer "chaîne" dans Picture1 (donc avec la typo de Picture1) :
.FreehDC = Me.hDC
.Text = "chaîne"
.Calculate

par contre avec la typo d'un label par exemple (qui n'a ni hWnd ni hDC), on doit spécifier la typo
.Font = Label.Font
une picture sera crée et on lui attribuera la typo désirée. cette picture étant créée dynamiquement, il faut la mettre sur la form, donc avoir le parent
.Parent = Form1

et ensuite pareil...
.Text = "chaîne"
.Calculate

dans ce cas de figure (pas de hDC), il y a besoin des propriétés Parent et Font!
et regarde dans la méthode Calculate, l'erreur n'est retournée que dans ce cas de figure.

pourquoi pas CreateDC ou autre.... beh parce que je n'ai pas réussi : comment créer un DC (sur 0 ou le bureau) et lui attribuer ensuite la Font du control voulue??!

"chaine" en tahoma16 ne fera pas la même taille qu'en tahoma10, il faut bien y attribuer la Font

si tu as des idées, je suis preneur (la création d'une picturebox ne m'enchante pas)
tu peux aussi jeter un oeil ici, çà peut te montrer une partie du problème :
http://www.vbfrance.com/infomsg_BIZARRERIE-HDC-AUTOREDRAW_840479.aspx
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 nov. 2006 à 11:03
Pas besoin de Property Let Parent ni de Property Let Font



Pas compris pourquoi tu créé cette pictureBox, même parfois...
c'est plutôt étrange
un CreateDC ou CreateCompatibleDC ferait l'affaire
(et pas besoin, alors de la propriété Parent)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 nov. 2006 à 10:38
pas de picturebox** créée (ni utilisée en supplément)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 nov. 2006 à 10:36
salut,
Le Cancre -> je vais voir ce que je peux faire...
VinceVG -> merci ;)
Renfield -> passer par une picturebox, pas à chaque cas.
avec l'exemple d'utilisation dans la rubrique [source], pas de hDC créé.
pourquoi pas TextWidth et TextHeight, d'une part parceque çà obligeait de passer un objet supplémentaire en param ou propriété (ce que je voulais éviter), et surtout parce que c'est plus long (pas de beaucoup mais bon ^^)
moyenne sur 2000 essais : 2.74ms par API contre 3.13ms par VB

++ ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 nov. 2006 à 10:06
Pas compris pourquoi tu passes par une PictureBox...
enfin, au pire, ok... mais pourquoi, alors ne pas utiliser TextWidth et TextHeight ?

je veux dire, tu mélange ici deux approches du problème
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
12 nov. 2006 à 18:34
Trés interessant ; Merci
Utilisateur anonyme
12 nov. 2006 à 15:54
Salut,
cette source donne la taille du texte,on à juste à mettre les valeurs du height et width pour l'objet recepteur(textbox,picturebox)...c'est ok
j'aimerais savoir si c'est possible de mettre une fonction qui permet de faire l'inverse, c'est à dire de donner la bonne taille de la police à mettre en fonction des dimensions de l'objet recepteur (picturebox) par exemple
Rejoignez-nous