public override void PostProcess(SKCanvas canvas, SKRect bounds, SKPaint paint) { paint.ImageFilter = SKImageFilter.CreateErode( (int)Properties.ErodeRadius.CurrentValue.Width, (int)Properties.ErodeRadius.CurrentValue.Height, paint.ImageFilter ); }
protected override void OnDrawSample(SKCanvas canvas, int width, int height) { canvas.Clear(SKColors.White); using (var stream = new SKManagedStream(SampleMedia.Images.Baboon)) using (var bitmap = SKBitmap.Decode(stream)) using (var filter = SKImageFilter.CreateErode(5, 5)) using (var paint = new SKPaint()) { paint.ImageFilter = filter; canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint); } }
public static SKImage ApplyErode(SKImage image, int degree) { var skErode = SKImageFilter.CreateErode(degree, degree); var skSurface = SKSurface.Create(new SKImageInfo(100, 100)); var skCanvas = skSurface.Canvas; var Paint = new SKPaint(); Paint.ImageFilter = skErode; skCanvas.Clear(); skCanvas.DrawImage(image, 0, 0, Paint); var img = skSurface.Snapshot(); skCanvas.Dispose(); skSurface.Dispose(); return(img); }
public static SKImage ApplyNoise(SKImage image) { var skSurface = SKSurface.Create(new SKImageInfo(100, 100)); var skCanvas = skSurface.Canvas; skCanvas.Clear(); var skPaint = new SKPaint(); if (StaticRandom.Instance.NextDouble() < 0.5) { skPaint.ImageFilter = SKImageFilter.CreateDilate(StaticRandom.Instance.Next(0, 2), StaticRandom.Instance.Next(0, 2)); } else { skPaint.ImageFilter = SKImageFilter.CreateErode(StaticRandom.Instance.Next(0, 3), StaticRandom.Instance.Next(0, 3)); } if (StaticRandom.Instance.NextDouble() < 0.5) { var noiseSize = 3; var noiseCount = 20; for (var i = 0; i < noiseCount; i++) { var x = StaticRandom.Instance.Next(0, 100 - noiseSize); var y = StaticRandom.Instance.Next(0, 100 - noiseSize); skCanvas.DrawRect(new SKRect(x, y, x + noiseSize, y + noiseSize), new SKPaint { Color = SKColors.White }); } } skCanvas.DrawImage(image, 0, 0, skPaint); var img = skSurface.Snapshot(); skCanvas.Dispose(); skSurface.Dispose(); return(img); }