public static void ColorTableColorFilter(SKCanvas canvas, int width, int height) { canvas.Clear(SKColors.White); var assembly = typeof(Demos).GetTypeInfo().Assembly; var imageName = assembly.GetName().Name + ".baboon.png"; var ct = new byte[256]; for (int i = 0; i < 256; ++i) { var x = (i - 96) * 255 / 64; ct[i] = x < 0 ? (byte)0 : x > 255 ? (byte)255 : (byte)x; } // load the image from the embedded resource stream using (var resource = assembly.GetManifestResourceStream(imageName)) using (var stream = new SKManagedStream(resource)) using (var bitmap = SKBitmap.Decode(stream)) using (var cf = SKColorFilter.CreateTable(null, ct, ct, ct)) using (var paint = new SKPaint()) { paint.ColorFilter = cf; canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint); } }
// WithColorFilter public SKShader WithColorFilter (SKColorFilter filter) { if (filter == null) throw new ArgumentNullException (nameof (filter)); return GetObject (SkiaApi.sk_shader_with_color_filter (Handle, filter.Handle)); }
public static SKImageFilter CreateColorFilter(SKColorFilter cf, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null) { if (cf == null) { throw new ArgumentNullException(nameof(cf)); } return(GetObject <SKImageFilter>(SkiaApi.sk_imagefilter_new_color_filter(cf.Handle, input == null ? IntPtr.Zero : input.Handle, cropRect == null ? IntPtr.Zero : cropRect.Handle))); }
public static SKShader CreateColorFilter (SKShader shader, SKColorFilter filter) { if (shader == null) throw new ArgumentNullException (nameof (shader)); if (filter == null) throw new ArgumentNullException (nameof (filter)); return GetObject<SKShader> (SkiaApi.sk_shader_new_color_filter (shader.Handle, filter.Handle)); }
public static SKColorFilter CreateCompose(SKColorFilter outer, SKColorFilter inner) { if (outer == null) throw new ArgumentNullException(nameof(outer)); if (inner == null) throw new ArgumentNullException(nameof(inner)); return GetObject<SKColorFilter>(SkiaApi.sk_colorfilter_new_compose(outer.Handle, inner.Handle)); }
// CreateColorFilter public static SKShader CreateColorFilter (SKShader shader, SKColorFilter filter) { if (shader == null) throw new ArgumentNullException (nameof (shader)); if (filter == null) throw new ArgumentNullException (nameof (filter)); return shader.WithColorFilter (filter); }
private SKColorFilter ToColorFilter(SKData uniforms, SKShader[] children) { var uniformsHandle = uniforms?.Handle ?? IntPtr.Zero; using var childrenHandles = Utils.RentHandlesArray(children, true); fixed(IntPtr *ch = childrenHandles) { return(SKColorFilter.GetObject(SkiaApi.sk_runtimeeffect_make_color_filter(Handle, uniformsHandle, ch, (IntPtr)childrenHandles.Length))); } }
public static SKShader CreateColorFilter(SKShader shader, SKColorFilter filter) { if (shader == null) { throw new ArgumentNullException(nameof(shader)); } if (filter == null) { throw new ArgumentNullException(nameof(filter)); } return(GetObject <SKShader> (SkiaApi.sk_shader_new_color_filter(shader.Handle, filter.Handle))); }
public static SKColorFilter CreateCompose(SKColorFilter outer, SKColorFilter inner) { if (outer == null) { throw new ArgumentNullException(nameof(outer)); } if (inner == null) { throw new ArgumentNullException(nameof(inner)); } return(GetObject <SKColorFilter>(SkiaApi.sk_colorfilter_new_compose(outer.Handle, inner.Handle))); }
public static void XferModeColorFilter(SKCanvas canvas, int width, int height) { canvas.Clear(SKColors.White); var assembly = typeof(Demos).GetTypeInfo().Assembly; var imageName = assembly.GetName().Name + ".baboon.png"; // load the image from the embedded resource stream using (var resource = assembly.GetManifestResourceStream(imageName)) using (var stream = new SKManagedStream(resource)) using (var bitmap = SKBitmap.Decode(stream)) using (var cf = SKColorFilter.CreateXferMode(SKColors.Red, SKXferMode.ColorDodge)) using (var paint = new SKPaint()) { paint.ColorFilter = cf; canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint); } }
public static void ColorMatrixColorFilter(SKCanvas canvas, int width, int height) { canvas.Clear(SKColors.White); var assembly = typeof(Demos).GetTypeInfo().Assembly; var imageName = assembly.GetName().Name + ".baboon.png"; // load the image from the embedded resource stream using (var resource = assembly.GetManifestResourceStream(imageName)) using (var stream = new SKManagedStream(resource)) using (var bitmap = SKBitmap.Decode(stream)) { var f = new Action <SKRect, float[]>((rect, colorMatrix) => { using (var cf = SKColorFilter.CreateColorMatrix(colorMatrix)) using (var paint = new SKPaint()) { paint.ColorFilter = cf; canvas.DrawBitmap(bitmap, rect, paint); } }); var colorMatrix1 = new float[20] { 0f, 1f, 0f, 0f, 0f, 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 1f, 0f }; var grayscale = new float[20] { 0.21f, 0.72f, 0.07f, 0.0f, 0.0f, 0.21f, 0.72f, 0.07f, 0.0f, 0.0f, 0.21f, 0.72f, 0.07f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f }; var colorMatrix3 = new float[20] { -1f, 1f, 1f, 0f, 0f, 1f, -1f, 1f, 0f, 0f, 1f, 1f, -1f, 0f, 0f, 0f, 0f, 0f, 1f, 0f }; var colorMatrix4 = new float[20] { 0.0f, 0.5f, 0.5f, 0f, 0f, 0.5f, 0.0f, 0.5f, 0f, 0f, 0.5f, 0.5f, 0.0f, 0f, 0f, 0.0f, 0.0f, 0.0f, 1f, 0f }; var highContrast = new float[20] { 4.0f, 0.0f, 0.0f, 0.0f, -4.0f * 255f / (4.0f - 1f), 0.0f, 4.0f, 0.0f, 0.0f, -4.0f * 255f / (4.0f - 1f), 0.0f, 0.0f, 4.0f, 0.0f, -4.0f * 255f / (4.0f - 1f), 0.0f, 0.0f, 0.0f, 1.0f, 0.0f }; var colorMatrix6 = new float[20] { 0f, 0f, 1f, 0f, 0f, 1f, 0f, 0f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 1f, 0f }; var sepia = new float[20] { 0.393f, 0.769f, 0.189f, 0.0f, 0.0f, 0.349f, 0.686f, 0.168f, 0.0f, 0.0f, 0.272f, 0.534f, 0.131f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f }; var inverter = new float[20] { -1f, 0f, 0f, 0f, 255f, 0f, -1f, 0f, 0f, 255f, 0f, 0f, -1f, 0f, 255f, 0f, 0f, 0f, 1f, 0f }; var matices = new[] { colorMatrix1, grayscale, highContrast, sepia, colorMatrix3, colorMatrix4, colorMatrix6, inverter }; var cols = width < height ? 2 : 4; var rows = (matices.Length - 1) / cols + 1; var w = (float)width / cols; var h = (float)height / rows; for (int y = 0; y < rows; y++) { for (int x = 0; x < cols; x++) { f(SKRect.Create(x * w, y * h, w, h), matices[y * cols + x]); } } } }
public static SKShader CreateColorFilter(SKShader shader, SKColorFilter filter) { return(GetObject <SKShader> (SkiaApi.sk_shader_new_color_filter(shader.Handle, filter.Handle))); }
public static SKImageFilter CreateColorFilter(SKColorFilter cf, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null) { if (cf == null) throw new ArgumentNullException(nameof(cf)); return GetObject<SKImageFilter>(SkiaApi.sk_imagefilter_new_color_filter(cf.Handle, input == null ? IntPtr.Zero : input.Handle, cropRect == null ? IntPtr.Zero : cropRect.Handle)); }