Ecrire un texte sur une Image en c#

j'ai le problème suivant. Je veux faire quelques graphiques dans l'image bitmap comme la forme de lien

je peux écrire un texte dans l'image

mais je vais écrire plus de texte dans diverses positions

Bitmap a = new Bitmap(@"pathpicture.bmp");

using(Graphics g = Graphics.FromImage(a))
{
 g.DrawString(....); // requires font, brush etc
}

comment écrire du texte et de l'enregistrer et écrire un autre texte dans l'image enregistrée

21
demandé sur Mr Alemi 2011-07-26 11:53:57

4 réponses

pour tirer plusieurs chaînes, appelez graphics.DrawString plusieurs fois. Vous pouvez spécifier l'emplacement de la chaîne. Cet exemple, nous allons dessiner deux chaînes "Hello", "Word" ("Hello "en bleu" mot "en rouge):

string firstText = "Hello";
string secondText = "World";

PointF firstLocation = new PointF(10f, 10f);
PointF secondLocation = new PointF(10f, 50f);

string imageFilePath = @"path\picture.bmp"
Bitmap bitmap = (Bitmap)Image.FromFile(imageFilePath);//load the image file

using(Graphics graphics = Graphics.FromImage(bitmap))
{
    using (Font arialFont =  new Font("Arial", 10))
    {
        graphics.DrawString(firstText, arialFont, Brushes.Blue, firstLocation);
        graphics.DrawString(secondText, arialFont, Brushes.Red, secondLocation);
    }
}

bitmap.Save(imageFilePath);//save the image file

Edit: "je l'ai Ajouter a charger et enregistrer un code".

vous pouvez ouvrir le fichier bitmap à tout moment Image.FromFile , et y dessiner un nouveau texte en utilisant le code ci-dessus. puis sauvegarder le fichier image bitmap.Save

59
répondu Jalal Said 2018-02-14 17:22:07

voici un exemple d'appel à Graphics.DrawString , tiré de ici :

g.DrawString("My\nText", new Font("Tahoma", 40), Brushes.White, new PointF(0, 0));

il est évident qu'il renonce à avoir une police appelée Tahoma installée.

la classe Brushes a beaucoup de brosses intégrées.

Voir aussi, la page MSDN pour Graphics.DrawString .

3
répondu George Duckett 2011-07-26 07:57:12

pour enregistrer les modifications au même fichier, J'ai dû combiner Jalal a dit 'S réponse et NSGaga 'S réponse sur " cette question. Vous devez créer un nouveau Bitmap objet basé sur l'ancien, disposer de l'ancien Bitmap objet, puis enregistrer en utilisant le nouvel objet:

string firstText = "Hello";
string secondText = "World";

PointF firstLocation = new PointF(10f, 10f);
PointF secondLocation = new PointF(10f, 50f);

string imageFilePath = @"path\picture.bmp";

Bitmap newBitmap;
using (var bitmap = (Bitmap)Image.FromFile(imageFilePath))//load the image file
{
    using(Graphics graphics = Graphics.FromImage(bitmap))
    {
        using (Font arialFont =  new Font("Arial", 10))
        {
            graphics.DrawString(firstText, arialFont, Brushes.Blue, firstLocation);
            graphics.DrawString(secondText, arialFont, Brushes.Red, secondLocation);
        }
    }
    newBitmap = new Bitmap(bitmap);
}

newBitmap.Save(imageFilePath);//save the image file
newBitmap.Dispose();
1
répondu Ibrahim 2017-09-26 14:48:43

si Quelqu'un a des problèmes avec ces lignes de code:

using(Graphics graphics = Graphics.FromImage(bitmap))

la solution est:

Bitmap bitmap = (Bitmap)**System.Drawing.Image.FromFile**(@"C:\Documents and Settings\", true);
-2
répondu sdasdasdasd 2015-11-05 22:11:46