SKShader クラス

定義

シェーダーは、 SKPaintで描画される内容のソースの色を指定します。

public class SKShader : SkiaSharp.SKObject
継承

線形グラデーション シェーダーの例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the shader
    var colors = new SKColor[] {
        new SKColor(0, 0, 255),
        new SKColor(0, 255, 0)
    };
    var shader = SKShader.CreateLinearGradient(
        new SKPoint(0, 0),
        new SKPoint(255, 255),
        colors,
        null,
        SKShaderTileMode.Clamp);

    // use the shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

線形グラデーション

放射状グラデーション シェーダーの例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the shader
    var colors = new SKColor[] {
        new SKColor(0, 0, 255),
        new SKColor(0, 255, 0)
    };
    var shader = SKShader.CreateRadialGradient(
        new SKPoint(128, 128),
        180,
        colors,
        null,
        SKShaderTileMode.Clamp);

    // use the shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

放射状グラデーション

2 点円錐状グラデーション シェーダーの例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the shader
    var colors = new SKColor[] {
        new SKColor(0, 0, 255),
        new SKColor(0, 255, 0)
    };
    var shader = SKShader.CreateTwoPointConicalGradient(
        new SKPoint(128, 128),
        128,
        new SKPoint(128, 16),
        16,
        colors,
        null,
        SKShaderTileMode.Clamp);

    // use the shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

2 点円錐グラデーション

スイープ グラデーション シェーダーの例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the shader
    var colors = new SKColor[] {
        new SKColor(0, 255, 255),
        new SKColor(255, 0, 255),
        new SKColor(255, 255, 0),
        new SKColor(0, 255, 255)
    };
    var shader = SKShader.CreateSweepGradient(
        new SKPoint(128, 128),
        colors,
        null);

    // use the shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

スイープ グラデーション

フラクタル パーリン ノイズ シェーダーの例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the shader
    var shader = SKShader.CreatePerlinNoiseFractalNoise(0.5f, 0.5f, 4, 0);

    // use the shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

フラクタルパーリンノイズ

Perlin ノイズ 乱れシェーダーの例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the shader
    var shader = SKShader.CreatePerlinNoiseTurbulence(0.05f, 0.05f, 4, 0);

    // use the shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

フラクタルパーリンノイズ

シェーダーの作成の例

var info = new SKImageInfo(256, 256);
using (var surface = SKSurface.Create(info)) {
    SKCanvas canvas = surface.Canvas;

    canvas.Clear(SKColors.White);

    // create the first shader
    var colors = new SKColor[] {
        new SKColor(0, 255, 255),
        new SKColor(255, 0, 255),
        new SKColor(255, 255, 0),
        new SKColor(0, 255, 255)
    };
    var sweep = SKShader.CreateSweepGradient(new SKPoint(128, 128), colors, null);

    // create the second shader
    var turbulence = SKShader.CreatePerlinNoiseTurbulence(0.05f, 0.05f, 4, 0);

    // create the compose shader
    var shader = SKShader.CreateCompose(sweep, turbulence, SKBlendMode.SrcOver);

    // use the compose shader
    var paint = new SKPaint {
        Shader = shader
    };
    canvas.DrawPaint(paint);
}

上記の例では、次の結果が生成されます。

シェーダー作成シェーダー

注釈

シェーダーは、描画する対象のソース の色を指定します。 ペイントにシェーダーがない場合は、ペイントの色が使用されます。 ペイントにシェーダーがある場合は、代わりにシェーダーの色が使用されますが、ペイントのアルファによって調整されます。

これにより、シェーダーを 1 回作成し (ビットマップ タイリングやグラデーションなど)、元のシェーダーを変更せずに透明度を変更することが簡単になり、ペイントのアルファのみを変更する必要があります。

シェーダーは、静的な "Create" メソッドのいずれかを呼び出すことによって作成されます。

プロパティ

名前 説明
Handle

基になるネイティブ オブジェクトへのハンドルを取得または設定します。

(継承元 SKObject)
IgnorePublicDispose

パブリック Dispose() の呼び出しを no-opするかどうかを示す値を取得します。

(継承元 SKNativeObject)
IsDisposed

オブジェクトが既に破棄されているかどうかを示す値を取得します。

(継承元 SKNativeObject)
OwnsHandle

このオブジェクトがハンドルを所有し、破棄されるときにネイティブ オブジェクトを破棄する必要があるかどうかを示す値を取得または設定します。

(継承元 SKNativeObject)

メソッド

名前 説明
CreateBitmap(SKBitmap, SKShaderTileMode, SKShaderTileMode, SKMatrix)

指定したビットマップで描画する新しいシェーダーを作成します。

CreateBitmap(SKBitmap, SKShaderTileMode, SKShaderTileMode)

指定したビットマップで描画する新しいシェーダーを作成します。

CreateBitmap(SKBitmap)

指定したビットマップで描画する新しいシェーダーを作成します。

CreateBlend(SKBlender, SKShader, SKShader)

カスタム ブレンダーを使用して 2 つのシェーダーをブレンドする新しいシェーダーを作成します。

CreateBlend(SKBlendMode, SKShader, SKShader)

ブレンド モードを使用して 2 つのシェーダーをブレンドする新しいシェーダーを作成します。

CreateColor(SKColor)

指定した色を描画するだけの新しいシェーダーを作成します。

CreateColor(SKColorF, SKColorSpace)

指定した色を描画するだけの新しいシェーダーを作成します。

CreateColorFilter(SKShader, SKColorFilter)

このシェーダーを呼び出し、カラー フィルターを適用するのと同じ色を生成する新しいシェーダーを作成します。

CreateCompose(SKShader, SKShader, SKBlendMode)

2 つのシェーダーをブレンド モードで結合する新しい作成シェーダーを作成します。

CreateCompose(SKShader, SKShader)

SrcOver ブレンド モードで 2 つのシェーダーを結合する新しい作成シェーダーを作成します。

CreateEmpty()

何も描画しない新しい "空" シェーダーを作成します。

CreateImage(SKImage, SKShaderTileMode, SKShaderTileMode, SKMatrix)

指定したタイル モードと変換マトリックスを使用してイメージを描画する新しいシェーダーを作成します。

CreateImage(SKImage, SKShaderTileMode, SKShaderTileMode, SKSamplingOptions, SKMatrix)

指定したタイル モード、サンプリング オプション、および変換マトリックスを使用してイメージを描画する新しいシェーダーを作成します。

CreateImage(SKImage, SKShaderTileMode, SKShaderTileMode, SKSamplingOptions)

指定したタイル モードとサンプリング オプションを使用してイメージを描画する新しいシェーダーを作成します。

CreateImage(SKImage, SKShaderTileMode, SKShaderTileMode)

指定したタイル モードでイメージを描画する新しいシェーダーを作成します。

CreateImage(SKImage)

イメージを描画する新しいシェーダーを作成します。

CreateLinearGradient(SKPoint, SKPoint, SKColor[], Single[], SKShaderTileMode, SKMatrix)

指定した 2 つの点の間に線形グラデーションを生成するシェーダーを作成します。

CreateLinearGradient(SKPoint, SKPoint, SKColor[], Single[], SKShaderTileMode)

指定した 2 つの点の間に線形グラデーションを生成するシェーダーを作成します。

CreateLinearGradient(SKPoint, SKPoint, SKColor[], SKShaderTileMode)

指定した 2 つの点の間に線形グラデーションを生成するシェーダーを作成します。

CreateLinearGradient(SKPoint, SKPoint, SKColorF[], SKColorSpace, Single[], SKShaderTileMode, SKMatrix)

指定した色空間内の指定した 2 つのポイント間に線形グラデーションを生成するシェーダーを作成します。

CreateLinearGradient(SKPoint, SKPoint, SKColorF[], SKColorSpace, Single[], SKShaderTileMode)

指定した色空間内の指定した 2 つのポイント間に線形グラデーションを生成するシェーダーを作成します。

CreateLinearGradient(SKPoint, SKPoint, SKColorF[], SKColorSpace, SKShaderTileMode)

指定した色空間内の指定した 2 つのポイント間に線形グラデーションを生成するシェーダーを作成します。

CreateLocalMatrix(SKShader, SKMatrix)

最初に指定されたマトリックスを適用し、次にシェーダーを適用するシェーダーを作成します。

CreatePerlinNoiseFractalNoise(Single, Single, Int32, Single, SKPointI)

Perlin のフラクタル ノイズを描画する新しいシェーダーを作成します。

CreatePerlinNoiseFractalNoise(Single, Single, Int32, Single, SKSizeI)

指定したタイル サイズのフラクタル パーリン ノイズを生成する新しいシェーダーを作成します。

CreatePerlinNoiseFractalNoise(Single, Single, Int32, Single)

Perlin のフラクタル ノイズを描画する新しいシェーダーを作成します。

CreatePerlinNoiseTurbulence(Single, Single, Int32, Single, SKPointI)

Perlin の乱れノイズを描画する新しいシェーダーを作成します。

CreatePerlinNoiseTurbulence(Single, Single, Int32, Single, SKSizeI)

指定したタイル サイズで Perlin ノイズの乱れを生成する新しいシェーダーを作成します。

CreatePerlinNoiseTurbulence(Single, Single, Int32, Single)

Perlin の乱れノイズを描画する新しいシェーダーを作成します。

CreatePicture(SKPicture, SKShaderTileMode, SKShaderTileMode, SKFilterMode, SKMatrix, SKRect)

指定した図、フィルター モード、変換マトリックス、タイル四角形で描画する新しいシェーダーを作成します。

CreatePicture(SKPicture, SKShaderTileMode, SKShaderTileMode, SKFilterMode, SKRect)

指定した図、フィルター モード、タイル四角形で描画する新しいシェーダーを作成します。

CreatePicture(SKPicture, SKShaderTileMode, SKShaderTileMode, SKFilterMode)

指定した図とフィルター モードで描画する新しいシェーダーを作成します。

CreatePicture(SKPicture, SKShaderTileMode, SKShaderTileMode, SKMatrix, SKRect)

指定した図で描画する新しいシェーダーを作成します。

CreatePicture(SKPicture, SKShaderTileMode, SKShaderTileMode, SKRect)

指定した図で描画する新しいシェーダーを作成します。

CreatePicture(SKPicture, SKShaderTileMode, SKShaderTileMode)

指定した図で描画する新しいシェーダーを作成します。

CreatePicture(SKPicture)

指定した図で描画する新しいシェーダーを作成します。

CreateRadialGradient(SKPoint, Single, SKColor[], Single[], SKShaderTileMode, SKMatrix)

中心と半径を指定して放射状グラデーションを生成するシェーダーを作成します。

CreateRadialGradient(SKPoint, Single, SKColor[], Single[], SKShaderTileMode)

中心と半径を指定して放射状グラデーションを生成するシェーダーを作成します。

CreateRadialGradient(SKPoint, Single, SKColor[], SKShaderTileMode)

中心と半径を指定して放射状グラデーションを生成するシェーダーを作成します。

CreateRadialGradient(SKPoint, Single, SKColorF[], SKColorSpace, Single[], SKShaderTileMode, SKMatrix)

指定した色空間に放射状グラデーションを生成するシェーダーを作成します。

CreateRadialGradient(SKPoint, Single, SKColorF[], SKColorSpace, Single[], SKShaderTileMode)

指定した色空間に放射状グラデーションを生成するシェーダーを作成します。

CreateRadialGradient(SKPoint, Single, SKColorF[], SKColorSpace, SKShaderTileMode)

指定した色空間に放射状グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColor[], Single[], SKMatrix)

中心を指定してスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColor[], Single[], SKShaderTileMode, Single, Single, SKMatrix)

中心を指定してスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColor[], Single[], SKShaderTileMode, Single, Single)

中心を指定してスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColor[], Single[])

中心を指定してスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColor[], SKShaderTileMode, Single, Single)

中心を指定してスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColor[])

中心を指定してスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColorF[], SKColorSpace, Single[], SKMatrix)

指定した色空間にスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColorF[], SKColorSpace, Single[], SKShaderTileMode, Single, Single, SKMatrix)

指定した色空間に角度範囲を持つスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColorF[], SKColorSpace, Single[], SKShaderTileMode, Single, Single)

指定した色空間に角度範囲を持つスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColorF[], SKColorSpace, Single[])

指定した色空間にスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColorF[], SKColorSpace, SKShaderTileMode, Single, Single)

指定した色空間に角度範囲を持つスイープ グラデーションを生成するシェーダーを作成します。

CreateSweepGradient(SKPoint, SKColorF[], SKColorSpace)

指定した色空間にスイープ グラデーションを生成するシェーダーを作成します。

CreateTwoPointConicalGradient(SKPoint, Single, SKPoint, Single, SKColor[], Single[], SKShaderTileMode, SKMatrix)

円を 2 つ指定して円錐状のグラデーションを生成するシェーダーを作成します。

CreateTwoPointConicalGradient(SKPoint, Single, SKPoint, Single, SKColor[], Single[], SKShaderTileMode)

2 つの円を指定して円錐状のグラデーションを生成するシェーダーを作成します。

CreateTwoPointConicalGradient(SKPoint, Single, SKPoint, Single, SKColor[], SKShaderTileMode)

円を 2 つ指定して円錐状のグラデーションを生成するシェーダーを作成します。

CreateTwoPointConicalGradient(SKPoint, Single, SKPoint, Single, SKColorF[], SKColorSpace, Single[], SKShaderTileMode, SKMatrix)

指定した色空間に円錐状のグラデーションを生成するシェーダーを作成します。

CreateTwoPointConicalGradient(SKPoint, Single, SKPoint, Single, SKColorF[], SKColorSpace, Single[], SKShaderTileMode)

指定した色空間に円錐状のグラデーションを生成するシェーダーを作成します。

CreateTwoPointConicalGradient(SKPoint, Single, SKPoint, Single, SKColorF[], SKColorSpace, SKShaderTileMode)

指定した色空間に円錐状のグラデーションを生成するシェーダーを作成します。

Dispose()

この SKNativeObjectで使用されているすべてのリソースを解放します。

(継承元 SKNativeObject)
Dispose(Boolean)

SKShaderによって使用されるアンマネージ リソースを解放し、必要に応じてマネージド リソースを解放します。

DisposeInternal()

破棄をトリガーし、 IgnorePublicDisposeの値を無視します。

(継承元 SKNativeObject)
DisposeManaged()

マネージド オブジェクトを破棄するために派生 SKObject 型によって実装されます。

(継承元 SKObject)
DisposeNative()

ネイティブ オブジェクトを破棄するために派生 SKObject 型によって実装されます。

(継承元 SKObject)
DisposeUnownedManaged()

派生 SKObject 型によって実装され、このインスタンスが所有していないマネージド オブジェクトを破棄します。

(継承元 SKObject)
WithColorFilter(SKColorFilter)

指定したカラー フィルターを適用して、このシェーダーと同じ色を生成する新しいシェーダーを返します。

WithLocalMatrix(SKMatrix)

指定した変換マトリックスが適用された状態で、このシェーダーと同じ色を生成する新しいシェーダーを返します。

適用対象