Запись текста на изображение в c #

У меня есть следующая проблема. Я хочу сделать некоторые графики в растровом изображении, например, в форме скрепления

я могу написать текст в изображении
но я напишу больше текста на разных позициях

Bitmap a = new Bitmap(@"path\picture.bmp"); using(Graphics g = Graphics.FromImage(a)) { g.DrawString(....); // requires font, brush etc } 

как я могу писать текст и сохранять его и писать другой текст в сохраненном изображении

Чтобы рисовать несколько строк, вызовите graphics.DrawString несколько раз. Вы можете указать местоположение рисованной строки. В этом примере мы нарисуем две строки: «Hello», «Word» («Hello» в голубом цвете «Word» красного цвета):

 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 

Изменить: «Я добавляю загрузку и сохраняю код».

Вы можете открыть файл растрового изображения в любое время Image.FromFile и нарисовать на нем новый текст, используя вышеуказанный код. а затем сохраните bitmap файла bitmap.Save

Ниже приведен пример вызова Graphics.DrawString , взятого отсюда :

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

Очевидно, он полагается на наличие шрифта Tahoma .

Класс Brushes имеет множество встроенных кистей.

См. Также страницу MSDN для Graphics.DrawString .

Чтобы сохранить изменения в том же файле, мне пришлось совместить ответ Джалала Саида и ответ NSGaga на этот вопрос. Вам нужно создать новый объект Bitmap на основе старого, удалить старый объект Bitmap , а затем сохранить с помощью нового объекта:

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

Если у кого-то возникают проблемы с этими кодовыми строками:

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

Решение:

 Bitmap bitmap = (Bitmap)**System.Drawing.Image.FromFile**(@"C:\Documents and Settings\", true); 
  • Прямая косая черта или обратная косая черта?
  • Добавить текстовую метку в узел d3 в силовой макете
  • Как искать и заменять текст в файле с помощью Python?
  • Предлагается ли использовать h: outputText для всего?
  • Прочитать текстовый файл в Google GWT?
  • Как читать файл из файла jar?
  • Прочитать файл по строкам в обратном порядке
  • jQuery, если div содержит этот текст, замените ту часть текста
  • Как повернуть метку в C #?
  • Подчеркивать текст в UIlabel
  • Command-A не выделяет текст в нескольких текстовых полях для Mac OS X
  • Давайте будем гением компьютера.