Introducción
En entorno de desarrollo Lazarus, es bastante complejo, como suelen ser los entornos de desarrollo actuales. Una tarea común, y aparentemente simple, como es mostrar gráficos en pantalla, suele convertirse en un dolor de cabeza para quienes no están muy empapados del conocimiento místico de esa sinergia: Object Pascal – Lazarus.
Este artículo pretende ser solo una guía a modo de ¿Qué usar si quiero hacer … ?, para encontrar el rumbo en este mar de técnicas, librerías y frameworks que existen en el ecosistema Lazarus.
Dibujos simples
Así como la mayoría de herramientas que permiten construir programas con una GUI, Lazarus incluye una librería, por defecto para esta tarea, que es la LCL, e incluye también un medio de crear dibujos sencillos y que es portable para todos los sistemas operativos que soporta Lazarus.
En la LCL, se define la clase TCanvas, que es el medio más simple de crear gráficos mediante instrucciones simples como líneas o círculos.
Una buena guía para dibujar usando TCanvas, la podemos encontrar aquí: https://wiki.freepascal.org/TCanvas
TCanvas tiene una variedad de opciones para dibujar formatos como JPG o GIF. Informacion más detallada para sacarle provecho a TCanvas, la podemos encontrar aquí: https://wiki.freepascal.org/Developing_with_Graphics/es
TCanvas es un buen punto de partida, para aprender a crear gráficos en Lazarus, si lo que queremos es dibujar «a mano» en todo el lienzo digital. Pero si queremos funciones de mayor nivel, o dibujar fotografías con efectos, Lazarus también viene con un arsenal de librerías (no todas muy avanzadas o completas) que nos ayudarán a trabajar con estos tipos de gráficos.
Tipos de gráficos
Ante todo hay que definir qué tipos de gráficos deseamos manejar. La siguiente clasificación es solo tentativa, pero sirve bien como punto de partida:
Esta clasificación, no pretende ser exhaustiva, sino que resulte útil para ubicarse en el uso de librerías. Los gráficos, tipo tabla, se pueden también considerar como gráficos vectorizados.
El primer grupo corresponde a imágenes digitalizadas, como un proceso de captura de algún dispositivo electrónico, como cámara fotográfica, video cámara o cámara satelital.
Este es el tipo de imágenes que usualmente uno procesaría con paquetes como Adobe Photoshop o Corel PothoPaint.
Si se desea manejar estas imágenes en Lazarus, se puede usar las librerías: BGRABitmap, LazRGBGraphics o PascalMagick.
La idea de estas librerías es facilitar el tratamiento de imágenes, que usualmente se manejan pixel por pixel.
Para los gráficos vectorizados, tenemos en Lazarus las librerías. La verdad es que no tenemos muchas opciones. Quizá la opción más conocida es fpVectorial. Pero esta librería, aunque avanza constantemente en implementación, dista de estar completa.
También para abrir archivos SVG, podemos usar AggPas, aunque personalmente no lo he probado.
Los gráficos tipo barras o líneas (Tipo gráficos de Excel), se pueden generar usando la librería TAChart.
La siguiente tabla, tomada de https://wiki.freepascal.org/Graphics_libraries, muestra un resumen de las librerías más usadas en el entorno de Lazarus:
Name | Platforms | Raster | Vectors | 3D | Supported File Formats |
AggPas | Windows, Linux, Mac OS | Yes | Yes | No | BMP, SVG, Flash (TXT), True Type Font |
Andorra 2D | Windows and Linux | Yes | No | No | BMP, PNG, TGA |
BGRABitmap | Win32, Win64, Linux (Gtk & Qt), Mac OS (Carbon) | Yes | Yes | Yes | read-write: BMP, ICO/CUR, JPEG, PNG, animated GIF, PCX, LZP, ORA, OXO, SVG, TGA, TIFF, XWD, XPM; read-only: PDN, PSD |
fcl-image | All platforms | Yes | No | No | BMP, JPG, PCX, PNG, TGA |
fpVectorial | Yes | Yes | Yes | PDF, Corel Draw, SVG, DXF | |
Graphics32 | Win32 and OS X | Yes | No | No | BMP, JPG, WMF, EMF |
Lazarus TCanvas | All supported by the LCL | Yes | No | No | BMP, ICO, ICNS, PNG, JPEG, GIF, etc |
Lazarus TLazCanvas+TLazIntfImage | All supported by the LCL | Yes | No | No | Only via fcl-image |
LazRGBGraphics | Yes | No | No | ||
Vampyre Imaging Library | Windows x86/AMD64, Linux x86/AMD64, FreeBSD x86/AMD64, Mac OS X on Intel | Yes | No | No | BMP, JPEG, PNG/APNG, GIF, DDS, TGA, MNG, JNG, JPEG2000, TIFF, PSD, PBM, PGM, PPM, PAM, PFM, PCX, XPM, and more |
Para gráficos 3D, se tiene una librería OpenGL y también GLScene.
También, para gráficos sencillos, en aplicaciones que manejen procesamiento de imágenes se puede usar OpenCV mediante algunas librerías como esta, que es parte de mi aporte a la comunidad de Lazarus.
Ahora si lo que se quiere es crear videojuegos, Lazarus también tiene una variedad de librerías especializadas, pero es ya tema de otro artículo.
¿Cómo citar este artículo?
- En APA: Hinostroza, T. (29 de mayo de 2021). Gráficos en Lazarus – Encontrando el rumbo. Blog de Tito. https://blogdetito.com/2021/05/29/graficos-en-lazarus-encontrando-el-rumbo/
- En IEEE: T. Hinostroza. (2021, mayo 29). Gráficos en Lazarus – Encontrando el rumbo. Blog de Tito. [Online]. Available: https://blogdetito.com/2021/05/29/graficos-en-lazarus-encontrando-el-rumbo/
- En ICONTEC: HINOSTROZA, Tito. Gráficos en Lazarus – Encontrando el rumbo [blog]. Blog de Tito. Lima Perú. 29 de mayo de 2021. Disponible en: https://blogdetito.com/2021/05/29/graficos-en-lazarus-encontrando-el-rumbo/
Dejar una contestacion