Calculer taille string avec Font pour ASP

Résolu
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007 - 22 mai 2007 à 14:07
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007 - 31 mai 2007 à 10:45
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
30 mai 2007 à 23:03
        Bitmap bmp = new Bitmap();
        Graphics g = Graphics.FromImage(bmp);

<hr />Cyril - MSP - MCTS ASP.net & SQL
3
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007
31 mai 2007 à 10:21
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;
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
22 mai 2007 à 17:50
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
0
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007
23 mai 2007 à 09:08
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 mai 2007 à 13:15
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
0
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007
23 mai 2007 à 14:01
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
0
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007
30 mai 2007 à 16:29
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
0
trikkle Messages postés 18 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 31 mai 2007
31 mai 2007 à 10:45
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 ...
0
Rejoignez-nous