2010-12-15 165 views
1

Je voudrais utiliser GDI pour générer des images de texte avec mes polices sur un serveur devant être servi sur mon site. Je veux utiliser n'importe quelle police sur mes sites, mais bien sûr je ne pouvais utiliser aucune police sur un site web ... donc je suppose que je devrais générer des images du texte moi-même.Utiliser GDI + avec C# pour créer une image pour un site

Comment faire cela?

Merci.

Répondre

3
private void button1_Click(object sender, EventArgs e) 
{ 
    using(Font f = new Font("Times New Roman", 22f)) 
    { 
     pictureBox1.Image = CreateImage("TEXT", pictureBox1.Size, f, Color.Black); 
    } 
} 

Bitmap CreateImage(string text, Size imageSize, Font font, Color fontColor) 
{ 
    Bitmap image = new Bitmap(imageSize.Width, imageSize.Height); 
    using(Graphics g = Graphics.FromImage(image)) 
    using(Brush brush = new SolidBrush(fontColor)) 
    { 
     g.DrawString(text, font, brush, new PointF(0, 0)); 
    } 

    return image; 
} 

Cela créera simplement une image avec du texte d'une certaine taille et l'assignera à une image. Vous devez bien sûr ajouter des fonctionnalités pour régler l'alignement et des choses de cette nature, mais c'est l'idée de base. Créez une image, récupérez un objet Graphics et dessinez une chaîne.

Vous pouvez également obtenir la largeur et la hauteur d'une chaîne dessinée en utilisant la police 'f' en utilisant la méthode Graphics.MeasureString.

+0

parfait. merci :) – Roman

+0

+1 Nice. Je suis allé au disque avec mon exemple! –

+0

Eh bien, c'est probablement une bonne idée si cette image va être servie à plusieurs clients. –

1

Exemple de code avec codage en dur pour plus de clarté:

Bitmap b = new Bitmap(200, 100); 
using (Graphics g = Graphics.FromImage(b)) { 
    g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias; 
    g.DrawString("Hello World!", new Font("Tahoma", 12), Brushes.DarkBlue, 0, 0); 
    b.Save("c:\\MyPic.bmp"); 
} 

La taille de l'image (200x100), le texte, l'emplacement de la police et de départ (0,0) et le chemin de destination sont tous codés en dur.

+0

+1 bud;) [plus de caractères] –

+0

Merci pour le signe de la tête et l'upvote, mais je suis mortier. X- | –