SkiaImageView
SkiaImageView copied to clipboard
A control for easy way showing SkiaSharp-based image objects onto WPF/XF/.NET MAUI/Avalonia applications.
SkiaImageView

NuGet
| Package | NuGet |
|---|---|
| SkiaImageView.Wpf | |
| SkiaImageView.Avalonia11 | |
| SkiaImageView.Avalonia | |
| SkiaImageView.Xamarin.Forms | |
| SkiaImageView.Maui |
What is this?
A control for easy way showing SkiaSharp-based image objects onto UI applications.
You can simply bind a SkiaSharp image object to Source property.
SKImageView is a control of SkiaSharp image drawing.
You can manipulate same as with WPF's System.Windows.Controls.Image.
Supported SkiaSharp types are: SKBitmap, SKImage, SKPicture, SKDrawable and SKSurface.
XAML example:
<Window xmlns:siv="https://github.com/kekyo/SkiaImageView">
<siv:SKImageView
Stretch="Uniform"
Source="{Binding PreviewImage}" />
</Window>
public sealed class ViewModel
{
public SKBitmap? PreviewImage { get; set; }
// ...
}
Fully sample code is here:
Regardless of which platform you use, the usage is almost identical.
Supported platform
WPF
- .NET 7, 6, 5 (
net7.0-windows,net6.0-windows,net5.0-windows) - .NET Core 3.1, 3.0 (
netcoreapp3.1,netcoreapp3.0) - .NET Framework 4.8, 4.6.2 (
net48,net462) - SkiaSharp: 2.80.0 or upper.
Avalonia
- .NET 7, 6, 5 (
net7.0,net6.0,net5.0) - .NET Core 3.1, 3.0, (
netcoreapp3.1,netcoreapp3.0) - .NET Core 2.2, 2.1, 2.0 (
netcoreapp2.2,netcoreapp2.1,netcoreapp2.0) - .NET Framework 4.8, 4.6.2 (
net48,net462) - Avalonia 11:
- Avalonia: 11.0.0 or upper
- SkiaSharp: 2.88.3 or upper.
- Avalonia (older):
- Avalonia: 0.10.0 or upper
- SkiaSharp: 2.80.0 or upper.
Xamarin Forms
- .NET Standard 2.0 (
netstandard2.0) - Xamarin Forms: 5.0.0.1874 or upper
- SkiaSharp: 2.80.0 or upper.
.NET MAUI
- .NET 7, 6 (
net7.0,net6.0) - .NET MAUI: 6 or upper.
- SkiaSharp: 2.88.0 or upper. (NOT 2.80.0, because the package contains some invalid type references.)
Available properties
| Name | Detail |
|---|---|
Source |
SkiaSharp image related objects. See listed below. |
Stretch |
Stretch enum value |
StretchDirection |
StretchDirection enum value |
RenderMode |
Rendering into back buffer by synchronous or asynchronous. |
Source property
The Source property accepts the following SkiaSharp types:
| Supported Type | Aspect ratio from | Note |
|---|---|---|
SKBitmap |
Origin | |
SKImage |
Origin | |
SKPicture |
Measured RenderSize |
|
SKDrawable |
Measured RenderSize |
|
SKSurface |
Measured RenderSize |
|
string |
Origin | URL string for downloading content |
Uri |
Origin | URL for downloading content |
Some types are drawn with aspect ratio corresponding to the current measured RenderSize area.
Therefore, to maintain the aspect ratio, the size must be explicitly controlled in XAML.
Note: If you specify a URL to display, the URL does NOT accept the WPF resource format.
(application: and pack: protocol based.)
RenderMode property
Choose rendering into back buffer by synchronous or asynchronous:
| RenderMode | Note |
|---|---|
Synchronously |
All rendering process is synchronously. |
AsynchronouslyForFetching |
Defaulted, Will operate asynchronously when giving URL in Source property (string or Uri). |
Asynchronously |
All rendering process is asynchronously. |
AsynchronouslyForFetching is defaulted.
Because, when set to Asynchronously, all instances given to Source must not be implicitly modified.
Maybe, this constraint can be difficult to achieve on your project.
License
Apache-v2.
History
- 1.5.0:
- Supported Avalonia 11.
- 1.4.0:
- Supported .NET MAUI. (Tested on 6.0.547).
- 1.3.0:
- Supported Avalonia platform (>= 0.10.0).
- Downgraded Xamarin Forms package version (>= 5.0.0.1874).
- 1.2.0:
- Fixed misconfigured bitfield of RGBA on Xamarin Forms.
- Added ProjectionQuality property for Xamarin Forms (You can adjust final image quality when need to make better performance.)
- 1.1.0:
- Supported Xamarin Forms.
- 1.0.1:
- Downgraded SkiaSharp to 2.80.0 (Because known bug related.)
- 1.0.0:
- Reached 1.0.0 🎉
- Fixed updating new image instance.
- 0.4.0:
- Added RenderMode features and supported StretchDirection.
- Added sample code.
- 0.3.0:
- Fixed XAML namespace.
- 0.2.0:
- Fixed some problems, add WIP feature.
- 0.1.0:
- Initial release.
