Gráficos en Lazarus – Encontrando el rumbo

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 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.


Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*