ECRITURE D'UN MOT AVEC PATH.ADDSTRING

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 6 mai 2010 à 14:36
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013 - 12 mai 2010 à 23:44
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/51730-ecriture-d-un-mot-avec-path-addstring

cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
12 mai 2010 à 23:44
@oxsygen : La fonction MeasureString du framework possède de nombreux bugs dont le plus gênant d'entre eux est de ne pas mesurer correctement les polices qui n'ont pas le même espacement entre les caractères, notamment les polices OpenType. La fonction écrite par l'auteur permet de contourner ce bug.
oxsygen Messages postés 1 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 12 mai 2010
12 mai 2010 à 12:41
C'est peu de dire que tu réécris la roue là.

En c# tu as :
using System.Windows.Forms; // for TextRenderer
Size size=TextRenderer.MeasureText(g, str, f, new Size(), TextFormatFlags.NoPadding);

(Doit avoir l'équivalent VB.NET j'imagine)

En Win32 pour les vb non .net
GetTextExtentPoint32
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
9 mai 2010 à 09:58
Pour les variables non détruites, toutes celles déclarées en DIM dans tes procédures/fonctions et qui ne sont pas détruites.

un varExemple = nothing suffit lorsque l'objet ne dispose pas de l'interface IDisposable. Sinon, varExemple.Dispose()
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
9 mai 2010 à 09:55
kbalist Messages postés 36 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 6 février 2011
8 mai 2010 à 09:22
Merci de ces remarques globalement positives...

"A chaque Refresh() on augmente la consommation du programme" :
Les variables locales sont bien détruites après le Refresh(), et j'ai même utilisé path.dispose(), ce qui devrait libérer la mémoire utilisée en sortie de la routine de dessin, non ?
Je ne vois donc pas l'intérêt de déclarer Path en Global, si ce n'est pour ne pas avoir à le créer et détruire à chaque dessin de l'écran...

Peux-tu me dire quelles sont les variables ou déclarations qui causeraient un dépassement de capacité en C ?

"première lettre du 1er mot en minuscule, 1ère lettre du 2ème mot en Majuscule" :
Je n'ai jamais vu cette règle... tu as un lien ?

"La variable "mot" n'est définie qu'une seule fois et ne change pas" :
Si ! Elle représente la chaine de caractères écrite à l'écran et elle est modifiable avec un controle

Merci de me donner ces quelques précisions pour mon édification personnelle et celle de ceux qui liront ce sujet...
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
7 mai 2010 à 19:56
C'est un peu codé avec les pieds niveau déclaration des variables, ce qui fait qu'à chaque Refresh() on augmente la consommation du programme. Heureusement que le GarbageCollector est là pour toi. Mais cela n'est pas une raison. En C/C++, tu aurais rapidement un dépassement de capacité. Path doit être déclaré globalement dans la mesure ou la gestion du dessin n'étant pas Multithreadée, la valeur ne peut pas être modifiée par 2 procédure s'exécutant conjointement. Bon OK, on n'est pas en C/C++ mais toute application qui vise à afficher quelque chose à l'écran en utilisant pas les composants standards, se doit d'être codée de façon irréprochable. Cependant, l'étude, la démonstration et l'applications sont 3 éléments maîtrisés parfaitement. Très bonnes recherches.

N'oublie pas de nommer tes variables correctement. hauteurMot ou à la rigueur hauteur_Mot mais première lettre du 1er mot en minuscule, 1ère lettre du 2ème mot en Majuscule. La variable "mot" n'est définie qu'une seule fois et ne change pas. Utilise le mot clé CONST pour Constante. Les constantes s'écrivent en majuscule. Voilou. Sinon, bon boulo.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 mai 2010 à 08:10
quand on programme en VB 2005, 2008, etc oui...

VB6 et inférieurs, c'est sans le .Net
kbalist Messages postés 36 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 6 février 2011
7 mai 2010 à 08:04
Sorry, je n'ai pas encore bien compris cette histoire de .net...
quand on programme en VB, c'est automatiquement du .net, non ?

En tous cas, je le saurai pour les autres !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 mai 2010 à 14:36
Deux sources postées, j'ai du activer le Flag "Utilise la technologie .net"

merci d'y penser pour la prochaine fois ^^
Rejoignez-nous