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
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
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
.
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();
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);