public CanvasRenderTarget applyHueRotationEffects(CanvasBitmap workingBitmap)
        {
            //CanvasBitmap workingBitmap = SelectWorkingBitmap(useOriginalBitmap);

            if (workingBitmap != null)
            {
                int ww = (int)workingBitmap.SizeInPixels.Width;
                int hh = (int)workingBitmap.SizeInPixels.Height;

                TemperatureAndTintEffect temperatureAndTintEffect = new TemperatureAndTintEffect();
                temperatureAndTintEffect.Source      = workingBitmap;
                temperatureAndTintEffect.Temperature = (float)hueTemperature;
                temperatureAndTintEffect.Tint        = (float)hueTint;

                HueRotationEffect hueRotationEffect = new HueRotationEffect();
                hueRotationEffect.Angle  = (float)hueRotationAngle;
                hueRotationEffect.Source = temperatureAndTintEffect;

                PosterizeEffect     posterizeEffect     = null;
                EdgeDetectionEffect edgeDetectionEffect = null;
                if (hueDoPosterize)
                {
                    posterizeEffect                 = new PosterizeEffect();
                    posterizeEffect.Source          = hueRotationEffect;
                    posterizeEffect.RedValueCount   = huePosterizeRedCount;
                    posterizeEffect.BlueValueCount  = huePosterizeBlueCount;
                    posterizeEffect.GreenValueCount = huePosterizeGreenCount;

                    edgeDetectionEffect              = new EdgeDetectionEffect();
                    edgeDetectionEffect.Source       = posterizeEffect;
                    edgeDetectionEffect.Amount       = (float)0.9;
                    edgeDetectionEffect.BlurAmount   = 1;
                    edgeDetectionEffect.OverlayEdges = true;
                }

                //if (canvasRenderTarget != null)
                //    canvasRenderTarget.Dispose();
                CanvasRenderTarget canvasRenderTarget = new CanvasRenderTarget(CanvasDevice.GetSharedDevice(), ww, hh, canvasBitmap.Dpi);
                using (var session = canvasRenderTarget.CreateDrawingSession())
                {
                    if (hueDoPosterize)
                    {
                        //session.DrawImage(posterizeEffect);
                        session.DrawImage(edgeDetectionEffect);
                    }
                    else
                    {
                        session.DrawImage(hueRotationEffect);
                    }
                }

                return(canvasRenderTarget);
            }

            return(null);
        }
        async Task <Uri> Posterize()
        {
            using (var source = new StorageFileImageSource(imageStorageFile))
            {
                var inf = await source.GetInfoAsync();

                using (var sharpnessEffect = new PosterizeEffect(source)
                {
                    ColorComponentValueCount = 10
                })
                {
                    LastEffect = sharpnessEffect;
                    return(await SaveToImage());
                }
            }
        }
Esempio n. 3
0
        private ICanvasImage CreatePosterize()
        {
            textLabel = requiresWin10;

            var posterizeEffect = new PosterizeEffect
            {
                Source = bitmapTiger
            };

            // Animation changes the number of distinct color levels.
            animationFunction = elapsedTime =>
            {
                posterizeEffect.RedValueCount   = 2 + (int)(Math.Pow(0.5 + Math.Sin(elapsedTime) * 0.5, 4) * 10);
                posterizeEffect.GreenValueCount = 2 + (int)(Math.Pow(0.5 + Math.Sin(elapsedTime / 1.3) * 0.5, 4) * 10);
                posterizeEffect.BlueValueCount  = 2 + (int)(Math.Pow(0.5 + Math.Sin(elapsedTime / 1.7) * 0.5, 4) * 10);
            };

            return(posterizeEffect);
        }