SKShader クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
シェーダーは、 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);
}
上記の例では、次の結果が生成されます。
スイープ グラデーション シェーダーの例
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) |