An experimental cross-platform native graphics library.
Перейти к файлу
Jonathan Dick 0892b3a4a5
Merge pull request #335 from dotnet/darc-release/6.0.2xx-preview14-a2d056db-ad90-4219-85e2-c5f6faa6c9b2
[release/6.0.2xx-preview14] Update dependencies from xamarin/xamarin-android
2022-03-10 09:54:40 -05:00
.config [release/6.0.1xx-rc1] Update dependencies from xamarin/xamarin-android (#157) 2021-08-31 00:38:20 +02:00
.github/workflows Format more of the files with POSIX compliance 2021-04-20 19:48:08 -04:00
build Update skia to match the current maui deps (#338) 2022-03-05 16:28:02 +02:00
eng Merge pull request #335 from dotnet/darc-release/6.0.2xx-preview14-a2d056db-ad90-4219-85e2-c5f6faa6c9b2 2022-03-10 09:54:40 -05:00
samples Update skia to match the current maui deps (#338) 2022-03-05 16:28:02 +02:00
src Update skia to match the current maui deps (#338) 2022-03-05 16:28:02 +02:00
tests/Microsoft.Maui.Graphics.Tests Renamed Rectangle to Rect and RectangleF to RectF 2022-02-18 10:34:22 +01:00
.editorconfig Format more of the files with POSIX compliance 2021-04-20 19:48:08 -04:00
.gitattributes Format C# files for POSIX compliance 2021-04-20 16:48:32 -04:00
.gitignore More fixes 2021-05-27 09:55:53 +01:00
CODE-OF-CONDUCT.md Adding code of conduct 2021-02-08 10:51:46 -08:00
CONTRIBUTING.md Create CONTRIBUTING.md (#169) 2021-09-16 02:29:56 +02:00
Directory.Build.props Fix version band variable 2022-01-05 18:50:19 -05:00
Directory.Build.targets Merge branch 'main' into remove-services 2021-11-25 10:32:36 +02:00
GitInfo.txt Update GitInfo.txt 2022-01-26 12:59:53 -05:00
LICENSE Initial commit 2020-10-27 13:14:16 -07:00
Microsoft.Maui.Graphics-net6.sln Restore Skia packages (#319) 2022-03-03 08:09:15 +02:00
Microsoft.Maui.Graphics.Mac-net6.slnf Net6 portable sample tester 2021-11-25 15:27:01 -05:00
Microsoft.Maui.Graphics.Mac.sln Initial pass at rename 2021-03-11 11:12:48 -09:00
Microsoft.Maui.Graphics.sln more fixes 2022-01-14 01:44:15 +02:00
Microsoft.Maui.Graphics.sln.DotSettings Initial pass at rename 2021-03-11 11:12:48 -09:00
NuGet.config Update dependencies from https://github.com/xamarin/xamarin-android build main-c71dfe6705d8f2edd8c2c7d75a46ed4797d84982-1 2022-03-01 13:40:09 +00:00
README.md Bugfix: Grammar. 2022-02-25 13:55:27 +13:00
azure-pipelines.yml escape replace 2022-03-02 16:25:27 -05:00
build.cake Revert "Add support for Arcade" 2021-10-18 19:46:13 +01:00
global.json Fix workload sdk band install location in tizen script 2022-03-01 17:08:16 -05:00

README.md

Microsoft.Maui.Graphics

NuGet

Microsoft.Maui.Graphics is a cross-platform graphics library for iOS, Android, Windows, macOS, Tizen and Linux completely in C#. With this library you can use a common API to target multiple abstractions allowing you to share your drawing code between platforms, or mix and match graphics implentations within a singular application.

Applications

Any dotnet projects needing a multi-platform graphics abstraction that is backed by native APIs can use Microsoft.Maui.Graphics.

.NET MAUI is an example of a project using Microsoft.Maui.Graphics.

Note: Microsoft.Maui.Graphics does not have a MAUI dependency and can be used on any of the supported platforms listed below.

Goals

  • No dependencies on System.Drawing
  • Support all graphics operations within an abstraction that the underlying abstraction supports.

Status

This is an experimental library; however it's based on code that's been in use in production applications for over 10 years. Because it was refactored out of another code base, some things may have been broken in that process.

Disclaimer

There is no official support. Use at your own Risk.

Supported Platforms

Platform Supported Abstractions
Xamarin.iOS CoreGraphics & SkiaSharp
Xamarin.Android Android.Graphics & SkiaSharp
Xamarin.Mac CoreGraphics & SkiaSharp
WPF SharpDX, SkiaSharp, Xaml & GDI
UWP SharpDX, Win2D, Xaml, SkiaSharp
WinForms SharpDX, SkiaSharp & GDI
Tizen SkiaSharp
Linux SkiaSharp
Xamarin.Forms Dependent on native platform support (noted above)

Main Abstractions

  • Canvas - You can draw to a any of the supported abstractions with a common drawing canvas API and a support of common operations and primitives
    • Rectangle, Point and Color primitives
    • Shapes (Rectangles, Rounded Rectangles, Ellipses, Arcs)
    • Paths
    • Images
    • Fonts
    • Shadows
    • Image and pattern fills
    • Clipping
    • etc...
  • Fonts - You can access fonts with a common API
  • Attributed text - You can draw attributed text with a common API
  • Bitmaps - You can create and draw on bitmap images with a common API
  • PDF - You can create PDFs using a common API

Known Limitations

  • Attributed text is not currently supported with SkiaSharp
  • The included Blazor (Canvas) implementation no longer compiles, but is included as a reminder to get it working again