public override void PreProcess(SKCanvas canvas, SKRect bounds, SKPaint paint) { paint.ImageFilter = SKImageFilter.CreateDilate( (int)Properties.DilateRadius.CurrentValue.Width, (int)Properties.DilateRadius.CurrentValue.Height, paint.ImageFilter ); }
public override void PostProcess(SKCanvas canvas, SKImageInfo canvasInfo, SKPath renderBounds, SKPaint paint) { paint.ImageFilter = SKImageFilter.CreateDilate( (int)Properties.DilateRadius.CurrentValue.Width, (int)Properties.DilateRadius.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.CreateDilate(5, 5)) using (var paint = new SKPaint()) { paint.ImageFilter = filter; canvas.DrawBitmap(bitmap, SKRect.Create(width, height), paint); } }
private void ApplyFilters(SKPaint paint, RasterizeLayerStyleDefinition layerStyleDef, RasterizeLayerStyle layerStyle) { paint.ColorFilter = SKColorFilter.CreateBlendMode(layerStyleDef.Color, SKBlendMode.SrcIn); if (layerStyleDef.IsBlurEnabled && layerStyleDef.IsDilateEnabled) { paint.ImageFilter = SKImageFilter.CreateBlur(layerStyle.Blur.X, layerStyle.Blur.Y, SKImageFilter.CreateDilate((int)layerStyle.Dilate.X, (int)layerStyle.Dilate.Y)); } else if (layerStyleDef.IsBlurEnabled) { paint.ImageFilter = SKImageFilter.CreateBlur(layerStyle.Blur.X, layerStyle.Blur.Y); } else if (layerStyleDef.IsDilateEnabled) { paint.ImageFilter = SKImageFilter.CreateDilate((int)layerStyle.Dilate.X, (int)layerStyle.Dilate.Y); } }
public static SKImage ApplyDilate(SKImage image, int degree) { var skErode = SKImageFilter.CreateDilate(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(); Paint.Dispose(); skErode.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); }
void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args) { SKImageInfo info = args.Info; SKSurface surface = args.Surface; SKCanvas canvas = surface.Canvas; canvas.Clear(SKColors.Pink); // Get values from sliders float sigmaX = (float)sigmaXSlider.Value; float sigmaY = (float)sigmaYSlider.Value; using (SKPaint paint = new SKPaint()) { // Set SKPaint properties paint.TextSize = (info.Width - 100) / (TEXT.Length / 2); paint.ImageFilter = SKImageFilter.CreateDilate((int)(sigmaX), (int)(sigmaY)); // .CreateBlur(sigmaX, sigmaY); // Get text bounds and calculate display rectangle SKRect textBounds = new SKRect(); paint.MeasureText(TEXT, ref textBounds); SKRect textRect = new SKRect(0, 0, info.Width, textBounds.Height + 50); // Center the text in the display rectangle float xText = textRect.Width / 2 - textBounds.MidX; float yText = textRect.Height / 2 - textBounds.MidY; canvas.DrawText(TEXT, xText, yText, paint); // Calculate rectangle for bitmap SKRect bitmapRect = new SKRect(0, textRect.Bottom, info.Width, info.Height); bitmapRect.Inflate(-50, -50); canvas.DrawBitmap(bitmap, bitmapRect, BitmapStretch.Uniform, paint: paint); } }