Кроссплатформенная графика в .NET: изучение альтернатив System.Drawing.Common

При работе с графикой в ​​приложениях.NET пространство имен System.Drawing.Common уже давно является популярным выбором. Однако одним из ограничений этого пространства имен является то, что оно не поддерживается на платформах, отличных от Windows. В этой статье мы рассмотрим ряд альтернативных методов и библиотек, которые можно использовать для создания кроссплатформенной графики в.NET.

  1. SkiaSharp:
    SkiaSharp — это мощная кроссплатформенная библиотека 2D-графики, которая является оболочкой библиотеки Skia. Он предоставляет богатый набор API-интерфейсов для рисования, манипулирования изображениями и рендеринга текста. Вот пример того, как нарисовать базовую фигуру с помощью SkiaSharp:
using SkiaSharp;
// Create a new SKCanvas
using (var surface = SKSurface.Create(width, height))
{
    var canvas = surface.Canvas;
    // Clear the canvas
    canvas.Clear(SKColors.Transparent);
    // Draw a rectangle
    using (var paint = new SKPaint())
    {
        paint.Color = SKColors.Red;
        canvas.DrawRect(0, 0, 100, 100, paint);
    }
// Save the canvas to a bitmap
    using (var image = surface.Snapshot())
    {
        using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
        {
            // Save the image to a file or use it as desired
        }
    }
}
  1. CairoSharp:
    CairoSharp — еще одна кроссплатформенная библиотека 2D-графики, обеспечивающая привязку C# к графической библиотеке Cairo. Он предлагает отличные возможности рендеринга и поддерживает различные форматы вывода, включая PDF, SVG и PNG. Вот пример рисования линии с помощью CairoSharp:
using Cairo;
// Create a new Cairo surface
using (var surface = new ImageSurface(Format.ARGB32, width, height))
{
    // Create a new Cairo context using the surface
    using (var context = new Context(surface))
    {
        // Set the line color and width
        context.SetSourceRGB(1, 0, 0);
        context.LineWidth = 2;
        // Move to the starting point
        context.MoveTo(0, 0);
        // Draw a line to the end point
        context.LineTo(100, 100);
        // Stroke the line
        context.Stroke();
    }
// Save the surface to a file or use it as desired
    surface.WriteToPng("output.png");
}
  1. Xamarin.Forms:
    Если вы разрабатываете кроссплатформенные мобильные приложения с помощью Xamarin.Forms, вы можете использовать его встроенные графические возможности. Библиотека SkiaSharp, упомянутая ранее, интегрирована в Xamarin.Forms, что позволяет создавать насыщенную интерактивную графику. Вот простой пример рисования круга с помощью Xamarin.Forms:
using SkiaSharp.Views.Forms;
using Xamarin.Forms;
// Create a new content page
public class MyPage : ContentPage
{
    public MyPage()
    {
        var canvasView = new SKCanvasView();
        canvasView.PaintSurface += OnCanvasViewPaintSurface;
        Content = canvasView;
    }
    private void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs e)
    {
        var canvas = e.Surface.Canvas;
        canvas.Clear(SKColors.Transparent);
        using (var paint = new SKPaint())
        {
            paint.Color = SKColors.Blue;
            canvas.DrawCircle(100, 100, 50, paint);
        }
    }
}

Хотя System.Drawing.Common может быть недоступен на платформах, отличных от Windows, существует несколько альтернативных методов и библиотек, которые можно использовать для создания кроссплатформенной графики в приложениях.NET. SkiaSharp, CairoSharp и Xamarin.Forms — это лишь несколько примеров из множества вариантов, доступных для создания насыщенной интерактивной графики. Изучив эти альтернативы, вы сможете обеспечить бесперебойную работу вашей графики на разных платформах и охватить более широкую аудиторию.