示例#1
0
 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
         );
 }
示例#2
0
 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);
            }
        }