Sistema.Dibujo en Linux

Si alguna vez tuvo que ejecutar sus aplicaciones .NET Core en Linux, es posible que haya notado que uno de los principales problemas es la falta de ensamblaje System.Drawing en el paquete estándar .NET Core. Aunque Microsoft recomienda usar System.Drawing.Common, esa no es la solución definitiva. Debe ejecutar ‘sudo’ en cada máquina de usuario para tener instalada la biblioteca libgdiplus. E incluso después de eso, sus resultados de renderizado serán ligeramente diferentes de los que tiene en las máquinas con Windows. Para hacer frente a este problema, este artículo cubre cómo usar System.Drawing en Linux sin la biblioteca libgdiplus.

Usando System.Drawing en Linux

Afortunadamente, ahora tenemos una solución. A continuación, demostraremos cómo nuestra API de gráficos .NET, Aspose.Drawing for .NET, puede ayudarlo a usar System.Drawing en Linux. Con Aspose.Drawing, puede deshacerse de las bibliotecas de gráficos con código nativo y hacer que sus imágenes tengan el mismo aspecto en todas las plataformas.

API de gráficos .NET: fácil de instalar

Para la instalación de Aspose.Drawing en una máquina Linux de destino, solo necesita tener instalado .NET Core. Coloque Aspose.Drawing.dll en la carpeta de su proyecto y ejecute el programa. Eso es todo. Ahora puede usar clases en el espacio de nombres System.Drawing tal como lo hace desde sus aplicaciones .NET Framework en Windows.

Para obtener los archivos binarios de Aspose.Drawing, descargue la última versión del sitio web oficial. Alternativamente, puede incluir la API directamente en su proyecto ejecutando el siguiente comando.

dotnet add package Aspose.Drawing

No se requieren componentes adicionales. Aspose.Drawing hace todo el dibujo por sí mismo sin hacer referencia a ninguna biblioteca nativa. Nunca recibirás mensajes como:

Unable to load DLL 'libgdiplus': The specified module could not be found.

Y no tiene que preocuparse por la versión del sistema de gráficos instalado en su plataforma.

Sin problemas de plataforma impredecibles

Con System.Drawing.Common puede obtener errores impredecibles en Linux al ejecutar código que se ejecutó con éxito en Windows:

WARNING *: Path conversion requested 34759680 bytes (2480 x 3504). Maximum size is 8388608 bytes.
ERROR:region.c:1155:GdipCombineRegionPath: assertion failed: (region->bitmap)

Aspose.Drawing no depende de libgdiplus, por lo que estará libre de tales problemas. Tenemos un motor de dibujo totalmente administrado, lo que significa que no dependemos de las bibliotecas de gráficos nativos. Ya no encontrará errores de plataforma incomprensibles y comportamiento impredecible de su programa.

Resultados de representación idénticos

Otro beneficio de usar Aspose.Drawing son los resultados de renderizado idénticos en todas las plataformas compatibles. Si usa System.Drawing.Common en .NET Core, sus resultados de representación pueden verse diferentes en Windows y Linux, vea el ejemplo a continuación.

System.Dibujo en Linux y Windows

Con Aspose.Drawing puede crear aplicaciones gráficas multiplataforma para Windows, Linux o Android y siempre obtendrá los mismos resultados de renderizado en cada plataforma. Esto se logró mediante la creación de un motor de renderizado 2D independiente de la plataforma en lugar de depender de bibliotecas de gráficos de terceros.

Aparte de las primitivas gráficas, la representación de fuentes es la misma en todas las plataformas. Y aunque las fuentes del sistema en Linux difieren de las de Windows, puede usar PrivateFontCollection para cargar su propio conjunto de fuentes. Otra forma es instalar un paquete de fuentes de Microsoft en un sistema Linux y llamar a las funciones de representación de texto como de costumbre.

Pruebe Aspose.Drawing gratis

Aspose.Drawing está disponible en NuGet. También puede descargar binarios o el instalador MSI. Puede usar la biblioteca Aspose.Drawing con restricciones o solicitar una licencia de prueba gratuita.

Entonces, ¿por qué no intentarlo hoy?

Conclusión

En este artículo, ha visto lo fácil que es usar System.Drawing en todas las plataformas sin dependencias y obtener el mismo resultado. Puede obtener más información sobre Aspose.Drawing en la página oficial. Si tiene alguna pregunta, utilice el foro y esté atento a futuras publicaciones y guías.

Ver también