Como crear texto como un archivo de imagen con GdiPlusX
28/04/2020
Autor: Cesar Ch.
Más que una vez que he visto a la gente pedir como crear imágenes que contengan algún texto. El ejemplo de abajo es realmente muy simple.
- Crear una fuente
- Medir el espacio que el texto necesitará
- Crear una imagen con el tamaño necesario
- Dibujar el texto
- Guardar en el disco
IMPORTANTE
Para ejecutar se requiere VFP9 y GdiPlusX.
Por favor, asegúrese de que tiene la última versión, porque VFPPaint utiliza algunas de las funciones que se han añadido recientemente.
DO LOCFILE("System.prg") WITH _SCREEN.System.Drawing LOCAL lcText lcText = "GdiPlusX is Cool !!!" * Crear una fuente LOCAL loFont as xfcFont loFont = _screen.system.Drawing.Font.New("Verdana", 32, .FontStyle.BoldItalic) LOCAL loTmpBmp as xfcBitmap loTmpBmp = .Bitmap.New(1,1) * Recuperar el objeto gráfico LOCAL loTmpGfx AS xfcGraphics loTmpGfx = .Graphics.FromImage(loTmpBmp) * Medir la cadena * tomar el tamaño necesario para el texto LOCAL loSize as xfcSize loSize = loTmpGfx.MeasureString(lcText, loFont) LOCAL loNewBmp as xfcBitmap loNewBmp = .Bitmap.New(loSize.Ceiling()) LOCAL loNewGfx as xfcGraphics loNewGfx = .Graphics.FromImage(loNewBmp) * Hacer el fondo amarillo loNewGfx.Clear(.Color.Yellow) * Crear un pincel sólido LOCAL loBrush as xfcSolidBrush loBrush = .SolidBrush.New(.Color.FromRGB(255,0,0)) && Rojo * Crear un objeto StringFormat para dibujar el texto centrado en la imagen LOCAL loStringFmt as xfcStringFormat loStringFmt = .StringFormat.New() loStringFmt.Alignment = .StringAlignment.Center * Crear un ractángulo con las medidas del Bitmap LOCAL loRect as xfcRectangleF loRect = loNewBmp.GetBounds() * Dibujar la cadena loNewGfx.DrawString(lcText, loFont, loBrush, loRect, loStringFmt) * Finalmente guardar la imagen loNewBmp.Save("c:\MyText.Png", .Imaging.ImageFormat.Png) * Mostrar la imagen RUN /N Explorer.exe c:\Mytext.Png ENDWITH
Referencias
Artículo original: How to create text as image file with GdiPlusX
http://weblogs.foxite.com/vfpimaging/archive/2007/11/24/5428.aspx
Autor: Cesar Ch.
Traducido por: Luis María Guayán