Calculer taille string avec Font pour ASP [Résolu]

Signaler
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007
-
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007
-
Bonjour,
Alors voila mon problème. J'ai trouvé sur MSDN les classes pour calculer la taille que prend un string en fonction de sa police. Le seule problème est qu'il me faut un objet Graphics que je n'est pas.
Cela me sert pour construire une page en ASP.Net dynamique. Dans la méthode précédent l'affichage de la page (page_load), je récupère des données dans une base pour les afficher et je souhaiterai connaitre la taille des string afin de régler l'affichage.
Voici la partie du code :

string stFont="Arial";
System.Drawing.
Font font =
new System.Drawing.
Font(stFont, 11);//créer la police
System.Drawing.
SizeF stringSize =
new System.Drawing.
SizeF();
System.Drawing.
Graphics graphics =
new System.Drawing.
Graphics();
stringSize = graphics.MeasureString(courantLib.getTexte(), font); //calcul la taille de la chaine

Le problème de la méthode "MeasureString" est qu'il lui faut un objet Graphics. J'ai donc essayer d'en construire un mais il n'existe pas de constructeur.

Merci d'avance pour votre aide

8 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
        Bitmap bmp = new Bitmap();
        Graphics g = Graphics.FromImage(bmp);

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007

Ok Merci, donc pour ceux qui ont besoin :

System.Drawing.Font font = new System.Drawing.Font("Arial", 11); //définit la Font utilisé
System.Drawing.SizeF stringSize = new System.Drawing.SizeF();
Bitmap bmp = new Bitmap(1, 1);
Graphics graphics = Graphics.FromImage(bmp);
stringSize = graphics.MeasureString(courantLib.getTexte(), font);
float largeur = stringSize.Width;
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

tu peux avoir un objet graphics en créant un bitmap. Mais quelle est l'utilité de ca ? tu fais du web, c'est le client qui gère l'affichage, la taille de la police etc... tu ne fais pas une application windows mais du html/CSS tu n'as normalement pas besoin de connaitre la taille de la police

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007

Bonjour,

En fait je créer un composant web d'affichage d'information personnalisé. Dans la base je récupère le texte à afficher et le style dans lequel l'afficher (police, taille, couleur ...).
Les informations sont ensuite affichées dans un tableau et je ne veut pas que certains textes soient affichées sur deux lignes.
Le site est destiné à être utilisé en intranet dans un premier temps puis peut être extranet par la suite et est designé en 1024px. Je pourrait donc faire nombre de caractère mais certains caratères et police prennent plus de place que d'autres.
Peut-tu me donner un exemple de code de création de bitmap comme tu me le dit.

Merci beaucoup
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
ce n'est pas la bonne solution ! il faut faire du HTML, ce sera beaucoup plus simple ! là ou tu veux pas que ca fasse deux lignes tu met un overflow:hidden;height:1em;

<hr />Cyril - MSP - MCTS ASP.net & SQL
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007

En fait, j'avais pas tout dis parce que j'avais pas penser a çà.
En fait dans les infos que j'ai il y a trois texte. Un texte complet avec un max de 30 caractères, un texte de 10 carac et un de 5.
Par exemple :
texte30 : date de naissance
texte10: dt naissan
texte5: dt na
Donc, si je veux connaitre le longueur que prendra le texte en fonction de la police et taille c'est parce que si le plus long passe pas je teste avec celui de 10 et sinon on met celui de 5 caractères.
Voila, en tout cas merci a chque fois pour tes précieuses informations. Un objet Graphics pourrait donc mettre utile je pense.

Merci
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007

Bonjour,

un petit up pour savoir si quelqu'un pouvait me montrer un exemple de création d'objet Graphics afin de pouvoir utiliser le code mis dans le premier post.
Il n'y a que l'instanciation de cet objet qui ne marche pas ( Il n'existe de constructeur vide).

Merci
Messages postés
18
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
31 mai 2007

Si quelqu'un lit encore ce topic, par contre je ne comprend la valeur retourné n'est pas exact.
La valeurs est bien proportionnel à la longeur de la chaine et des caractère, par contre quand je mesure avec des lignes avec WebDevelopper ce n'est pas la bonne valeur. Retourne 40 alors que je mesure 28. Je ne sais pas pourquoi, car je rentre bien la bonne police et la bonne taille.
Si quelqu'un sait pourquoi ...