Package | NuGet |
---|---|
SkiaImageView.Wpf | |
SkiaImageView.Avalonia11 | |
SkiaImageView.Avalonia | |
SkiaImageView.Xamarin.Forms | |
SkiaImageView.Maui |
SkiaSharp ベースのイメージオブジェクトを、UIアプリケーションに簡単に表示するためのコントロールです。
Source
プロパティに、SkiaSharpのイメージオブジェクトをバインディングするだけで表示できます。
SKImageView
コントロールは、WPFの System.Windows.Controls.Image
とほぼ同じ使い方で表示させることが出来ます。
SkiaSharpイメージオブジェクトとしてサポートしているクラスです: SKBitmap
, SKImage
, SKPicture
, SKDrawable
, SKSurface
XAMLの例:
<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; }
// ...
}
サンプルコードの一覧です:
どのプラットフォームで使用しても、使いかたはほぼ同一です。
- .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以上
- .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以上
- SkiaSharp: 2.88.3以上
- Avalonia (older):
- Avalonia: 0.10.0以上
- SkiaSharp: 2.80.0以上
- .NET Standard 2.0 (
netstandard2.0
) - Xamarin Forms: 5.0.0.1874以上
- SkiaSharp: 2.80.0以上
- .NET 7, 6 (
net7.0
,net6.0
) - .NET MAUI: 6以上
- SkiaSharp: 2.88.0以上 (2.80.0ではありません。何故なら、このバージョンには不正な型参照が含まれており、MAUI環境では正しく機能しないためです。)
プロパティ名 | 内容 |
---|---|
Source |
SkiaSharpオブジェクトを設定します。一覧は後述。 |
Stretch |
Stretch列挙型 |
StretchDirection |
StretchDirection列挙型 |
RenderMode |
レンダリングモードを示す列挙型 |
Source
プロパティには、以下のSkiaSharpオブジェクトを設定出来ます:
使用可能な型 | アスペクト比の計算元 | 備考 |
---|---|---|
SKBitmap |
元のイメージ | |
SKImage |
元のイメージ | |
SKPicture |
配置先のRenderSize による |
|
SKDrawable |
配置先のRenderSize による |
|
SKSurface |
配置先のRenderSize による |
|
string |
元のイメージ | イメージをダウンロードするURL |
Uri |
元のイメージ | イメージをダウンロードするURL |
いくつかの型は描画時のアスペクト比を、コントロールが配置された場所の RenderSize
によって決定します。
その場合、イメージの正しいアスペクト比を維持するためには、XAMLによって制御する必要があります。
注意: WPFにおいてURLを指定する場合は、WPFのリソースフォームURLを認識できません。
(これらは、application:
や pack:
から始まります。)
イメージのレンダリングを行う方法を、以下から選択出来ます:
RenderMode | 詳細 |
---|---|
Synchronously |
全てのレンダリングは、同期的に実行されます。 |
AsynchronouslyForFetching |
デフォルトです。Source プロパティがURLで指定された場合のみ、イメージのフェッチを非同期で実行し、その後表示します。 |
Asynchronously |
全てのレンダリングは、非同期的に実行されます。 |
AsynchronouslyForFetching
がデフォルトです。
Asynchronously
を使用する場合は、Source
に指定されるイメージの詳細が、暗黙の内に変更されないようにする必要があります。
この制約を実現するのは難易度が高いかもしれません。
Apache-v2.
英語のREADMEを参照して下さい。