При работе с графикой в приложениях.NET пространство имен System.Drawing.Common уже давно является популярным выбором. Однако одним из ограничений этого пространства имен является то, что оно не поддерживается на платформах, отличных от Windows. В этой статье мы рассмотрим ряд альтернативных методов и библиотек, которые можно использовать для создания кроссплатформенной графики в.NET.
- 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
}
}
}
- 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");
}
- 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 — это лишь несколько примеров из множества вариантов, доступных для создания насыщенной интерактивной графики. Изучив эти альтернативы, вы сможете обеспечить бесперебойную работу вашей графики на разных платформах и охватить более широкую аудиторию.