c# image text draw

Escribir texto en una imagen en c#



draw (4)

Aquí hay un ejemplo de una llamada a Graphics.DrawString , tomada de here :

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

Obviamente, se basa en tener instalada una fuente llamada Tahoma .

La clase de Brushes tiene muchos pinceles incorporados.

Vea también, la página de MSDN para Graphics.DrawString .

Tengo el siguiente problema. Quiero hacer algunos gráficos en imagen de mapa de bits como forma de enlace

puedo escribir un texto en imagen
Pero escribiré más texto en varias posiciones.

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

¿Cómo puedo escribir texto y guardarlo y escribir otro texto en la imagen guardada?


Para dibujar múltiples cadenas, llame a graphics.DrawString varias veces. Puede especificar la ubicación de la cadena dibujada. En este ejemplo dibujaremos dos cadenas "Hola", "Palabra" ("Hola" en color azul por adelantado "Palabra" en color rojo):

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

Edición: "Agrego una carga y guardo código".

Puede abrir el archivo de mapa de bits en cualquier momento en Image.FromFile y dibujar un nuevo texto en él utilizando el código anterior. y luego guardar el archivo de imagen de bitmap.Save . bitmap.Save


Para guardar los cambios en el mismo archivo, tuve que combinar la respuesta de y la respuesta de NSGaga en this pregunta. Debe crear un nuevo objeto de mapa de bits basado en el anterior, desechar el objeto de mapa de bits antiguo y luego guardar utilizando el nuevo objeto:

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 alguien tiene problemas con este código de líneas:

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

La solucion es :

Bitmap bitmap = (Bitmap)**System.Drawing.Image.FromFile**(@"C:/Documents and Settings/", true);