Ejemplo n.º 1
0
        public void UpdateMask()
        {
            var start = _canvas.Size.ToVector2() * _canvas.Center.ToVector2();
            var end   = new Vector2(start.X > _canvas.Size.Width - start.X ? 0.0f : (float)_canvas.Size.Width,
                                    start.Y > _canvas.Size.Height - start.Y ? 0.0f : (float)_canvas.Size.Height);

            var radius = (end - start).Length();

            var commandList = new CanvasCommandList(_canvas);

            using (var drawingSession = commandList.CreateDrawingSession())
            {
                using (var brush = new CanvasRadialGradientBrush(_canvas, Colors.White, Colors.Black)
                {
                    Center = start,
                    RadiusX = radius,
                    RadiusY = radius
                })
                    drawingSession.FillRectangle(new Rect(new Point(0, 0), _canvas.Size), brush);
            }


            _dissolveEffect.Source2 = new Transform2DEffect
            {
                Source = commandList
            };
        }
        /// <inheritdoc/>
        protected override bool OnDraw(CanvasDevice device, CanvasDrawingSession session, Vector2 size)
        {
            // Create our Brush
            if (GradientStops != null && GradientStops.Count > 0)
            {
                var gradientBrush = new CanvasRadialGradientBrush(
                    device,
                    GradientStops.ToWin2DGradientStops(),
                    SpreadMethod.ToEdgeBehavior(),
                    (CanvasAlphaMode)(int)AlphaMode,
                    ColorInterpolationMode.ToCanvasColorSpace(),
                    CanvasColorSpace.Srgb,
                    CanvasBufferPrecision.Precision8UIntNormalized)
                {
                    // Calculate Surface coordinates from 0.0-1.0 range given in WPF brush
                    RadiusX = size.X * (float)RadiusX,
                    RadiusY = size.Y * (float)RadiusY,
                    Center  = size * Center.ToVector2(),

                    // Calculate Win2D Offset from origin/center used in WPF brush
                    OriginOffset = size * (GradientOrigin.ToVector2() - Center.ToVector2()),
                };

                // Use brush to draw on our canvas
                session.FillRectangle(size.ToRect(), gradientBrush);

                gradientBrush.Dispose();

                return(true);
            }

            return(false);
        }
Ejemplo n.º 3
0
            private void createGradients(CanvasDrawingSession canvas)
            {
                if (currentState == 0)
                {
                    shader = new CanvasRadialGradientBrush(canvas, Color.FromArgb(0xFF, 0x00, 0x78, 0xff), Color.FromArgb(0xFF, 0x33, 0xc6, 0x59));
                }
                else
                {
                    shader = new CanvasRadialGradientBrush(canvas, Color.FromArgb(0xFF, 0x59, 0xc7, 0xf8), Color.FromArgb(0xFF, 0x00, 0x78, 0xff));
                }

                shader.RadiusX = MathF.Sqrt(200 * 200 + 200 * 200);
                shader.RadiusY = MathF.Sqrt(200 * 200 + 200 * 200);
                shader.Center  = new Vector2(300, 0);

                //if (this.currentState == 0)
                //{
                //    int color = Theme.getColor("voipgroup_muteButton");
                //    this.color1 = color;
                //    int color3 = Theme.getColor("voipgroup_unmuteButton");
                //    this.color2 = color3;
                //    this.shader = new RadialGradient(200.0f, 200.0f, 200.0f, new int[] { color, color3 }, (float[])null, Shader.TileMode.CLAMP);
                //    return;
                //}
                //int color4 = Theme.getColor("voipgroup_unmuteButton2");
                //this.color1 = color4;
                //int color5 = Theme.getColor("voipgroup_unmuteButton");
                //this.color2 = color5;
                //this.shader = new RadialGradient(200.0f, 200.0f, 200.0f, new int[] { color4, color5 }, (float[])null, Shader.TileMode.CLAMP);
            }
Ejemplo n.º 4
0
        public CanvasRadialGradientBrush PaintBrush(ICanvasResourceCreator rc, float R, float Hard, float Opacity, Color Color)
        {
            CanvasGradientStop[] stops = new CanvasGradientStop[3]
            {
                new CanvasGradientStop
                {
                    Position = 0,
                    Color    = Color.FromArgb((byte)(Color.A * Opacity), Color.R, Color.G, Color.B)
                },
                new CanvasGradientStop
                {
                    Position = 0.8f,
                    Color    = Color.FromArgb((byte)(Color.A * Opacity * Hard), Color.R, Color.G, Color.B)
                },
                new CanvasGradientStop
                {
                    Position = 1,
                    Color    = Colors.Transparent
                }
            };
            CanvasRadialGradientBrush PaintBrush = new CanvasRadialGradientBrush(rc, stops);



            PaintBrush.Center  = new Vector2(0, 0);
            PaintBrush.RadiusX = PaintBrush.RadiusY = R;
            return(PaintBrush);
        }
Ejemplo n.º 5
0
        internal virtual void fillRadialGradient(int startColor, int endColor, int x, int y, int width, int height)
        {
            //using (createAlphaLayer())
            //{
            var startcolor = new Color()
            {
                A = (byte)alpha, B = (byte)(startColor & 0xff), G = (byte)((startColor >> 8) & 0xff), R = (byte)((startColor >> 16) & 0xff)
            };
            var endcolor = new Color()
            {
                A = (byte)alpha, B = (byte)(endColor & 0xff), G = (byte)((endColor >> 8) & 0xff), R = (byte)((endColor >> 16) & 0xff)
            };

            CanvasRadialGradientBrush brush = new CanvasRadialGradientBrush(graphics, startcolor, endcolor);

            brush.Center = new Vector2()
            {
                X = x + width / 2,
                Y = y + height / 2,
            };
            brush.RadiusX = width / 2;
            brush.RadiusY = height / 2;

            graphics.FillRectangle(x, y, width, height, brush);
            //}
        }
Ejemplo n.º 6
0
        private void Canvas_CreateResources(Microsoft.Graphics.Canvas.UI.Xaml.CanvasAnimatedControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
        {
            //创建径向渐变画笔的实例;中心将是透明的, 极端不透明的黑色
            canvasRadialGradientBrush = new CanvasRadialGradientBrush(sender, Colors.Transparent, Colors.Black);

            //加载要绘制的图像。
            args.TrackAsyncAction(Task.Run(async() => { image = await CanvasBitmap.LoadAsync(sender, new Uri("ms-appx:///wallhaven-766453.jpg")); }).AsAsyncAction());
        }
Ejemplo n.º 7
0
 private void Dispose(bool disposing)
 {
     if (_canvasRadialGradientBrush != null)
     {
         _canvasRadialGradientBrush.Dispose();
         _canvasRadialGradientBrush = null;
     }
 }
Ejemplo n.º 8
0
        private void Canvas_CreateResources(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
        {
            // Create instance of radial gradient brush; the center will be transparent and the extremes opaque black.
            radialBrush = new CanvasRadialGradientBrush(sender, Colors.Transparent, Colors.Black);

            // Load image to draw.
            args.TrackAsyncAction(Task.Run(async () =>
            {
                image = await CanvasBitmap.LoadAsync(sender, new Uri("ms-appx:///SpotlightImage.png"));
            }).AsAsyncAction());
        }
Ejemplo n.º 9
0
        public void LiquifyFill(ICanvasResourceCreator rc)//填充蓝色渐变圆形
        {
            Liquify = new CanvasCommandList(rc);

            using (var ds = Liquify.CreateDrawingSession())
            {
                //画渐变圆形
                CanvasRadialGradientBrush brush = PaintBrush(rc, new Vector2(LiquifySize), LiquifySize, 0, LiquifyAmount / 100, LiquifyColor);
                ds.FillCircle(LiquifySize, LiquifySize, LiquifySize, brush);
            }
        }
Ejemplo n.º 10
0
        private void Canvas_CreateResources(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
        {
            // Create instance of radial gradient brush; the center will be transparent and the extremes opaque black.
            radialBrush = new CanvasRadialGradientBrush(sender, Colors.Transparent, Colors.Black);

            // Load image to draw.
            args.TrackAsyncAction(Task.Run(async() =>
            {
                image = await CanvasBitmap.LoadAsync(sender, new Uri("ms-appx:///SpotlightImage.png"));
            }).AsAsyncAction());
        }
Ejemplo n.º 11
0
        public CanvasRadialGradientBrush PaintBrush(ICanvasResourceCreator rc, Vector2 v, float R, float Hard, float Opacity, Color Color)
        {
            CanvasRadialGradientBrush PaintBrush =

                new CanvasRadialGradientBrush(rc,
                                              Color.FromArgb((byte)(Color.A * Opacity), Color.R, Color.G, Color.B),
                                              Color.FromArgb((byte)(Color.A * Opacity * Hard), Color.R, Color.G, Color.B));

            PaintBrush.Center  = v;
            PaintBrush.RadiusX = PaintBrush.RadiusY = R;
            return(PaintBrush);
        }
Ejemplo n.º 12
0
        private CanvasRadialGradientBrush CreateRadialGradient(CanvasDrawingSession session, Rect area, SvgRadialGradientElement element)
        {
            if (this.ResourceCache.ContainsKey(element))
            {
                return((CanvasRadialGradientBrush)this.ResourceCache[element]);
            }

            var stops = element.ChildNodes.Cast <SvgStopElement>().Select(s =>
            {
                var alpha = s.Style.StopOpacity.HasValue ? (byte)(255.0F * s.Style.StopOpacity.Value) : (byte)0xff;
                var stop  = new CanvasGradientStop()
                {
                    Position = s.Offset,
                    Color    = Color.FromArgb(alpha, s.Style.StopColor.RgbColor.Red, s.Style.StopColor.RgbColor.Green, s.Style.StopColor.RgbColor.Blue)
                };
                return(stop);
            }).ToArray();

            var m = element.GradientTransform.Result;

            if (element.GradientUnits == SvgUnitType.ObjectBoundingBox)
            {
                m = new SvgMatrix(area.Width, 0.0, 0.0, area.Height, area.X, area.Y) * m;
            }
            var transform = new Matrix3x2 {
                M11 = (float)m.A, M12 = (float)m.B, M21 = (float)m.C, M22 = (float)m.D, M31 = (float)m.E, M32 = (float)m.F
            };

            var centerX      = this.LengthConverter.ConvertX(element.CenterX);
            var centerY      = this.LengthConverter.ConvertY(element.CenterY);
            var focusX       = this.LengthConverter.ConvertX(element.FocusX);
            var focusY       = this.LengthConverter.ConvertY(element.FocusY);
            var radiusX      = this.LengthConverter.ConvertX(element.Radius);
            var radiusY      = this.LengthConverter.ConvertY(element.Radius);
            var spreadMethod = GetSpreadMethod(element.SpreadMethod);
            var brush        = new CanvasRadialGradientBrush(this.ResourceCreator, stops, spreadMethod, CanvasAlphaMode.Straight)
            {
                OriginOffset = new Vector2 {
                    X = focusX - centerX, Y = focusY - centerY
                },
                Center = new Vector2 {
                    X = centerX, Y = centerY
                },
                RadiusX   = radiusX,
                RadiusY   = radiusY,
                Transform = transform,
            };

            this.DisposableObjects.Add(brush);
            this.ResourceCache.Add(element, brush);
            return(brush);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Creates the CanvasLinearGradientBrush from the parsed data
        /// </summary>
        /// <param name="resourceCreator">ICanvasResourceCreator object</param>
        /// <returns></returns>
        public override ICanvasBrush CreateBrush(ICanvasResourceCreator resourceCreator)
        {
            var brush = CanvasRadialGradientBrush.CreateHdr(resourceCreator, _gradientStopHdrs.ToArray(), _edgeBehavior,
                                                            _alphaMode, _preInterpolationColorSpace, _postInterpolationColorSpace, _bufferPrecision);

            brush.RadiusX      = _radiusX;
            brush.RadiusY      = _radiusY;
            brush.Center       = _center;
            brush.OriginOffset = _originOffset;
            brush.Opacity      = _opacity;

            return(brush);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Creates the CanvasLinearGradientBrush from the parsed data
        /// </summary>
        /// <param name="resourceCreator">ICanvasResourceCreator object</param>
        /// <returns></returns>
        public override ICanvasBrush CreateBrush(ICanvasResourceCreator resourceCreator)
        {
            var brush = new CanvasRadialGradientBrush(resourceCreator, _gradientStops.ToArray(), _edgeBehavior,
                                                      _alphaMode, _preInterpolationColorSpace, _postInterpolationColorSpace, _bufferPrecision)
            {
                RadiusX      = _radiusX,
                RadiusY      = _radiusY,
                Center       = _center,
                OriginOffset = _originOffset,
                Opacity      = _opacity
            };

            return(brush);
        }
Ejemplo n.º 15
0
        void CreateResources(CanvasAnimatedControl sender, CanvasCreateResourcesEventArgs args)
        {
            // Create a gradient brush, used to control layer opacity.
            var gradientStops = new CanvasGradientStop[]
            {
                new CanvasGradientStop { Position = 0,     Color = Colors.White       },
                new CanvasGradientStop { Position = 0.25f, Color = Colors.White       },
                new CanvasGradientStop { Position = 1,     Color = Colors.Transparent },
            };

            gradientBrush = new CanvasRadialGradientBrush(sender, gradientStops);

            // Create a star shaped geometry, used for layer clipping.
            clipGeometry = Utils.CreateStarGeometry(sender, 1, Vector2.Zero);
        }
Ejemplo n.º 16
0
        public override ICanvasBrush GetBrush(CanvasDevice device, byte alpha)
        {
            var center = new Vector2(_x0, _y0);

            center = LocalMatrix.Transform(center);

            var canvasRadialGradientBrush = new CanvasRadialGradientBrush(device,
                                                                          _canvasGradientStopCollection,
                                                                          CanvasEdgeBehavior.Clamp, CanvasAlphaMode.Straight)
            {
                Center  = center,
                Opacity = alpha / 255f,
                RadiusX = _r,
                RadiusY = _r
            };

            return(canvasRadialGradientBrush);
        }
Ejemplo n.º 17
0
 private void Dispose(bool disposing)
 {
     if (_canvasRadialGradientBrush != null)
     {
         try
         {
             _canvasRadialGradientBrush.Dispose();
         }
         catch
         {
             // Ignore
         }
         finally
         {
             _canvasRadialGradientBrush = null;
         }
     }
 }
Ejemplo n.º 18
0
        public UGRadialGradientBrush(IUGContext context, Vector2 center, float radius, IEnumerable <UGGradientStop> gradientStops, UGEdgeBehavior edgeBehavior)
        {
            var count = gradientStops.Count();

            if (count < 2)
            {
                throw new ArgumentException(nameof(gradientStops));
            }

            var device     = ((UGContext)context).Device;
            var winrtStops = gradientStops.ToWinRTGradientStops();
            var native     = new CanvasRadialGradientBrush(device, winrtStops, edgeBehavior.ToWinRTEdgeBehavior(), CanvasAlphaMode.Premultiplied);

            native.Center  = center;
            native.RadiusX = radius;
            native.RadiusY = radius;
            _native        = native;
        }
Ejemplo n.º 19
0
        void Draw(CanvasDrawingSession drawingSession, string text, Size size)
        {
            // Background gradient.
            using (var brush = CanvasRadialGradientBrush.CreateRainbow(drawingSession, 0))
            {
                brush.Center = size.ToVector2() / 2;

                brush.RadiusX = (float)size.Width;
                brush.RadiusY = (float)size.Height;

                drawingSession.FillRectangle(0, 0, (float)size.Width, (float)size.Height, brush);
            }

            // Text label.
            var label = string.Format("{0}\n{1:0} x {2:0}", text, size.Width, size.Height);

            drawingSession.DrawText(label, size.ToVector2() / 2, Colors.Black, textLabelFormat);
        }
Ejemplo n.º 20
0
        public void LiquifyFill(ICanvasResourceCreator rc, CanvasBitmap cb)//填充一个位图
        {
            Liquify = new CanvasCommandList(rc);

            using (var ds = Liquify.CreateDrawingSession())
            {
                //画渐变圆形
                CanvasRadialGradientBrush brush = PaintBrush(rc, new Vector2(LiquifySize), LiquifySize, 0, LiquifyAmount / 100, LiquifyColor);
                ds.FillCircle(LiquifySize, LiquifySize, LiquifySize, brush);

                //画位图
                ScaleEffect se = new ScaleEffect
                {
                    Source = cb,
                    Scale  = new Vector2(LiquifySize * 2 / (float)cb.Size.Width)
                };
                ds.DrawImage(se, 0, 0, new Rect(0, 0, LiquifySize * 2, LiquifySize * 2), 1, CanvasImageInterpolation.Linear, CanvasComposite.SourceIn);
            }
        }
Ejemplo n.º 21
0
        private void BGCycle_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
        {
            CanvasGradientStop[] gradientStop = new CanvasGradientStop[2];
            gradientStop[0]          = new CanvasGradientStop();
            gradientStop[0].Color    = Color.FromArgb(180, 18, 208, 255);
            gradientStop[0].Position = 0f;

            gradientStop[1]          = new CanvasGradientStop();
            gradientStop[1].Color    = Color.FromArgb(0, 255, 255, 255);
            gradientStop[1].Position = 1f;

            CanvasRadialGradientBrush brush = new CanvasRadialGradientBrush(sender, gradientStop);

            brush.RadiusX = 200;
            brush.RadiusY = 200;
            brush.Center  = new Vector2(200, 200);

            args.DrawingSession.FillCircle(200, 200, 200, brush);
        }
Ejemplo n.º 22
0
        void CreateResources(CanvasAnimatedControl sender, CanvasCreateResourcesEventArgs args)
        {
            attractor = new Attractor(canvas.Size);
            // Create a gradient brush, used to control layer opacity.
            var gradientStops = new CanvasGradientStop[]
            {
                new CanvasGradientStop {
                    Position = 0, Color = Colors.White
                },
                new CanvasGradientStop {
                    Position = 0.25f, Color = Colors.White
                },
                new CanvasGradientStop {
                    Position = 1, Color = Colors.Transparent
                },
            };

            gradientBrush = new CanvasRadialGradientBrush(sender, gradientStops);
        }
Ejemplo n.º 23
0
        void CreateRadialGradient(ICanvasResourceCreator resourceCreator)
        {
            radialGradient = new CanvasCommandList(resourceCreator);

            using (var drawingSession = radialGradient.CreateDrawingSession())
            {
                var sqrt2 = (float)Math.Sqrt(2);

                var brush = new CanvasRadialGradientBrush(resourceCreator, Colors.White, Colors.Black)
                {
                    Center = tigerSize / 2,

                    RadiusX = tigerSize.X / sqrt2,
                    RadiusY = tigerSize.Y / sqrt2,
                };

                drawingSession.FillRectangle(bitmapTiger.Bounds, brush);
            }
        }
Ejemplo n.º 24
0
        void CreateResources(CanvasAnimatedControl sender, CanvasCreateResourcesEventArgs args)
        {
            // Create a gradient brush, used to control layer opacity.
            var gradientStops = new CanvasGradientStop[]
            {
                new CanvasGradientStop {
                    Position = 0, Color = Colors.White
                },
                new CanvasGradientStop {
                    Position = 0.25f, Color = Colors.White
                },
                new CanvasGradientStop {
                    Position = 1, Color = Colors.Transparent
                },
            };

            gradientBrush = new CanvasRadialGradientBrush(sender, gradientStops);

            // Create a star shaped geometry, used for layer clipping.
            clipGeometry = Utils.CreateStarGeometry(sender, 1, Vector2.Zero);
        }
Ejemplo n.º 25
0
        void m_canvasControl_CreateResources(CanvasControl sender, object args)
        {
            m_bitmap_tiger      = null;
            m_bitmap_colorGrids = null;

            UpdateCanvasControlSize();
            m_imageBrush = new CanvasImageBrush(sender);

            m_offscreenTarget = new CanvasRenderTarget(sender, 100, 100);

            using (CanvasDrawingSession ds = m_offscreenTarget.CreateDrawingSession())
            {
                ds.Clear(Colors.DarkBlue);
                ds.FillRoundedRectangle(new Rect(0, 0, 100, 100), 30, 30, Colors.DarkRed);
                ds.DrawRoundedRectangle(new Rect(0, 0, 100, 100), 30, 30, Colors.LightGreen);
                ds.DrawText("Abc", 0, 0, Colors.LightGray);
                ds.DrawText("Def", 25, 25, Colors.LightGray);
                ds.DrawText("Efg", 50, 50, Colors.LightGray);
            }

            CanvasGradientStop[] stops = new CanvasGradientStop[4];
            stops[0].Position     = 0;
            stops[0].Color        = Colors.Black;
            stops[1].Position     = 1;
            stops[1].Color        = Colors.White;
            stops[2].Position     = 0.2f;
            stops[2].Color        = Colors.Purple;
            stops[3].Position     = 0.7f;
            stops[3].Color        = Colors.Green;
            m_linearGradientBrush = CanvasLinearGradientBrush.CreateRainbow(sender, 0.0f);
            m_radialGradientBrush = new CanvasRadialGradientBrush(
                sender,
                stops,
                CanvasEdgeBehavior.Clamp,
                CanvasAlphaMode.Premultiplied);
        }
Ejemplo n.º 26
0
        private ICanvasImage CreateAlphaMask()
        {
            if (!AlphaMaskEffect.IsSupported)
            {
                return CreateNotSupportedMessage(requiresWin10_14393);
            }

            textLabel = requiresWin10_14393;

            // Draw an alpha gradient into a command list.
            var alphaGradientBrush = new CanvasRadialGradientBrush(canvas, Colors.Black, Colors.Transparent)
            {
                Center = bitmapTiger.Size.ToVector2() / 2,

                RadiusX = (float)bitmapTiger.Size.Width,
                RadiusY = (float)bitmapTiger.Size.Height
            };

            var alphaMask = new CanvasCommandList(canvas);

            using (var drawingSession = alphaMask.CreateDrawingSession())
            {
                drawingSession.FillRectangle(bitmapTiger.Bounds, alphaGradientBrush);
            }

            // Apply the alpha mask to the tiger bitmap.
            var alphaMaskEffect = new AlphaMaskEffect
            {
                Source = bitmapTiger,
                AlphaMask = alphaMask
            };

            // Composite the alpha masked image on top of a background checker pattern.
            var compositeEffect = new CompositeEffect
            {
                Sources = { CreateCheckeredBackground(), alphaMaskEffect }
            };

            animationFunction = elapsedTime => { };

            return compositeEffect;
        }
Ejemplo n.º 27
0
        private void CanvasAnimatedControl_Draw(ICanvasAnimatedControl sender, CanvasAnimatedDrawEventArgs args)
        {
            sender.ClearColor = Colors.Black;

            Vector2 centerScreen = new Vector2((float)sender.Size.Width / 2, ((float)sender.Size.Height / 2f) + 20);
            Vector2 centerShadow = new Vector2((float)sender.Size.Width / 2, ((float)sender.Size.Height / 2f) + 180);

            if (_gameState == GameState.Connected ||
                _gameState == GameState.Connecting ||
                _gameState == GameState.ConnectionFailed)
            {
                args.DrawingSession.DrawImage(_logo, centerScreen + new Vector2((float)-_logo.Size.Width/2, (float)-_logo.Size.Height/2));
            }
            args.DrawingSession.DrawText("Sensorial Rhythm", 20, 20, Colors.DarkOrange, _gameNameTextFormat);

            if (_gameState == GameState.Ready)
            {
                args.DrawingSession.DrawText("Ready?!", centerScreen + new Vector2(-75, -250), Colors.DarkRed, _gameNameTextFormat);
            }

            if (_gameState == GameState.GameOver)
            {
                args.DrawingSession.DrawText("Game Over", centerScreen + new Vector2(-125, -250), Colors.DarkRed, _gameNameTextFormat);
            }

            if (_gameState == GameState.ThreeTwoOneGo || _gameState == GameState.LevelUp || _gameState2 == GameState.GotPoints)
            {
                if (_currentBeatTime < 1 && _currentLevel < 2)
                    args.DrawingSession.DrawText("Three, Two, One... GO!!!", centerScreen + new Vector2(-250, -250), Colors.Blue, _gameNameTextFormat);

                args.DrawingSession.DrawText(string.Format("Level {0}/{1}", _currentLevel, _gameSequence.Length), (float)sender.Size.Width - 200, 20, Colors.DarkOrange, _uiTextFormat);
                args.DrawingSession.DrawText(string.Format("Points {0}", _points), (float)sender.Size.Width - 200, 70, Colors.DarkOrange, _uiTextFormat);
                args.DrawingSession.DrawText(string.Format("Lives {0}", 6 - _numFails), (float)sender.Size.Width - 200, 130, Colors.DarkOrange, _uiTextFormat);

                if (!(_currentBeatTime < 1 && _currentLevel < 2))
                {
                    if (_gameState2 == GameState.GotPoints || _gameState2 == GameState.Failed)
                    {
                        if (_gameState2 == GameState.Failed)
                            _currentIdxReward = 3; // failed
                        args.DrawingSession.DrawText(_rewardMessage[_currentIdxReward], centerScreen + new Vector2(-100, -250), _rewardMessageColor[_currentIdxReward], _gameNameTextFormat);
                    }
                }
            }


            var gradientStops = new CanvasGradientStop[]
            {
                new CanvasGradientStop { Position = 0, Color = _currentColor },
                new CanvasGradientStop { Position = 1, Color = Colors.Transparent }
            };

            var brush = new CanvasRadialGradientBrush(args.DrawingSession,
            gradientStops,
            CanvasEdgeBehavior.Mirror,
            CanvasAlphaMode.Premultiplied
            )
            {
                Center = new Vector2(centerShadow.X, centerShadow.Y),
                RadiusX = 300,
                RadiusY = 50,
            };

            args.DrawingSession.FillEllipse(centerShadow, 300, 50, brush);


            if (_gameState == GameState.ThreeTwoOneGo || _gameState == GameState.LevelUp || _gameState2 == GameState.GotPoints)
            {
                args.DrawingSession.DrawLine((float)sender.Size.Width - 375,
                                        ((float)sender.Size.Height / 2f) + 20 - 75,
                                        (float)sender.Size.Width - 375, ((float)sender.Size.Height / 2f) + 20 + 75, Colors.DarkOrange, 4);

                args.DrawingSession.DrawLine((float)sender.Size.Width - 225,
                                            ((float)sender.Size.Height / 2f) + 20 - 125,
                                            (float)sender.Size.Width - 225, ((float)sender.Size.Height / 2f) + 20 + 125, Colors.DarkOrange, 4);

                // UI sequence
                int x = 0;
                for (int s = 0; s < _gameSequence.Length; s++)
                {
                    var seq = _gameSequence[s];
                    for (int t = 0; t < seq.Times; t++)
                    {
                        SpheroCircleSmall spheroUI = new SpheroCircleSmall(50, seq.Colors[t]);
                        spheroUI.Draw(_posSpheroSeq + new Vector2(x, 0), args.DrawingSession);

                        args.DrawingSession.DrawText(SpheroMovementTypeCharacters[(int)seq.Movements[t]],
                                                     _posSpheroSeq + new Vector2(x - 15, -25),
                                                     Colors.Black, _uiSequenceTextFormat);

                        x += 150;
                    }
                    //x += 150;
                }
            }

            if (!(_gameState == GameState.Connected ||
                _gameState == GameState.Connecting ||
                _gameState == GameState.ConnectionFailed))
            {
                SpheroCircle sphero = new SpheroCircle(150, _currentColor);
                sphero.Draw(centerScreen, args.DrawingSession);
            }

            // Debug
            args.DrawingSession.DrawText("Game State: " + _gameState, 10, (float)sender.Size.Height - 130, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Current Beat: " + _currentBeatTime, 10, (float)sender.Size.Height - 115, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Color: " + _currentColor.ToString(), 10, (float)sender.Size.Height - 100, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Gyroscope X: " + _gyroscopeX, 10, (float)sender.Size.Height - 85, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Gyroscope Y: " + _gyroscopeY, 10, (float)sender.Size.Height - 70, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Gyroscope Z: " + _gyroscopeZ, 10, (float)sender.Size.Height - 55, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Movement Type: " + _movType, 10, (float)sender.Size.Height - 40, Colors.Gray, _debugTextFormat);
            args.DrawingSession.DrawText("Current Movement Type: " + _currentMovType, 10, (float)sender.Size.Height - 25, Colors.Gray, _debugTextFormat);
        }
Ejemplo n.º 28
0
        private CanvasRadialGradientBrush CreateRadialGradient(CanvasDrawingSession session, Rect area, SvgRadialGradientElement element)
        {
            if (this.ResourceCache.ContainsKey(element))
            {
                return((CanvasRadialGradientBrush)this.ResourceCache[element]);
            }

            var stops = element.ChildNodes.Cast <SvgStopElement>().Select(s =>
            {
                var alpha = s.Style.StopOpacity.HasValue ? (byte)(255.0F * s.Style.StopOpacity.Value) : (byte)0xff;
                var stop  = new CanvasGradientStop()
                {
                    Position = s.Offset,
                    Color    = s.Style.StopColor.StopColorType == SvgStopColorType.CurrentColor
                                                ? s.Style.Color.ToPlatformColor(alpha)
                                                : s.Style.StopColor?.ToPlatformColor(alpha) ?? Color.FromArgb(alpha, 0, 0, 0)
                };
                return(stop);
            }).ToArray();

            var m         = element.GradientTransform.Result;
            var transform = new Matrix3x2 {
                M11 = (float)m.A, M12 = (float)m.B, M21 = (float)m.C, M22 = (float)m.D, M31 = (float)m.E, M32 = (float)m.F
            };

            float centerX, centerY, focusX, focusY, radiusX, radiusY;

            if (element.GradientUnits != SvgUnitType.UserSpaceOnUse)
            {
                centerX = this.LengthConverter.ConvertXForOBBU(element.CenterX, (float)area.X, (float)area.Width);
                centerY = this.LengthConverter.ConvertYForOBBU(element.CenterY, (float)area.Y, (float)area.Height);
                focusX  = this.LengthConverter.ConvertXForOBBU(element.FocusX, (float)area.X, (float)area.Width);
                focusY  = this.LengthConverter.ConvertYForOBBU(element.FocusY, (float)area.Y, (float)area.Height);
                radiusX = this.LengthConverter.ConvertXForOBBU(element.Radius, (float)area.X, (float)area.Width);
                radiusY = this.LengthConverter.ConvertYForOBBU(element.Radius, (float)area.Y, (float)area.Height);
            }
            else
            {
                centerX = this.LengthConverter.ConvertX(element.CenterX);
                centerY = this.LengthConverter.ConvertY(element.CenterY);
                focusX  = this.LengthConverter.ConvertX(element.FocusX);
                focusY  = this.LengthConverter.ConvertY(element.FocusY);
                radiusX = this.LengthConverter.ConvertX(element.Radius);
                radiusY = this.LengthConverter.ConvertY(element.Radius);
            }
            var spreadMethod = GetSpreadMethod(element.SpreadMethod);
            var brush        = new CanvasRadialGradientBrush(this.ResourceCreator, stops, spreadMethod, CanvasAlphaMode.Straight)
            {
                OriginOffset = new Vector2 {
                    X = focusX - centerX, Y = focusY - centerY
                },
                Center = new Vector2 {
                    X = centerX, Y = centerY
                },
                RadiusX   = radiusX,
                RadiusY   = radiusY,
                Transform = transform,
            };

            this.DisposableObjects.Add(brush);
            this.ResourceCache.Add(element, brush);
            return(brush);
        }
Ejemplo n.º 29
0
        internal virtual void fillRadialGradient(int startColor, int endColor, int x, int y, int width, int height)
        {
            var startcolor = new Color() { A = 0xff, B = (byte)(startColor & 0xff), G = (byte)((startColor >> 8) & 0xff), R = (byte)((startColor >> 16) & 0xff) };
            var endcolor = new Color() { A = 0xff, B = (byte)(endColor & 0xff), G = (byte)((endColor >> 8) & 0xff), R = (byte)((endColor >> 16) & 0xff) };

            CanvasRadialGradientBrush brush = new CanvasRadialGradientBrush(graphics, startcolor, endcolor);
            brush.Center = new Vector2()
            {
                X =  x + width / 2,
                Y =  y + height/ 2,
            };
            brush.RadiusX = width / 2;
            brush.RadiusY = height / 2;

            graphics.FillRectangle(x, y, width, height, brush);
        }
Ejemplo n.º 30
0
        public override void Init(WriteableBitmap bmp, IGrap9Attr attr = null)
        {
            var newbg = attr.bgurl != bgurl || attr.fgurl != fgurl || attr.hard != hard;

            base.Init(bmp, attr);
            b      = bmp;
            source = new CanvasRenderTarget(
                device, b.PixelWidth, b.PixelHeight, 96,
                Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized,
                CanvasAlphaMode.Premultiplied
                );
            Canvas = new CanvasRenderTarget(
                device, b.PixelWidth, b.PixelHeight, 96,
                Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized,
                CanvasAlphaMode.Premultiplied
                );
            Invalidate(true);

            try
            {
                if (newbg)
                {
                    if (fgurl != "")
                    {
                        var img = LayerPaint.Img.Create(fgurl);
                        Shape = CanvasBitmap.CreateFromBytes(
                            device, img.PixelBuffer, img.PixelWidth, img.PixelHeight,
                            Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized
                            );
                    }
                    else
                    {
                        var px     = 200;
                        var csize  = Canvas.Size;
                        var sample = new CanvasRenderTarget(device, 2 * px, 2 * px, 96,
                                                            Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized, CanvasAlphaMode.Premultiplied
                                                            );
                        var tb = new CanvasRadialGradientBrush(device, new[]  {
                            new CanvasGradientStop()
                            {
                                Color = Color.FromArgb(255, 255, 255, 255), Position = hard
                            },
                            new CanvasGradientStop()
                            {
                                Color = Color.FromArgb(255, 0, 0, 0), Position = 1f
                            },
                        }, CanvasEdgeBehavior.Clamp, CanvasAlphaMode.Straight);
                        using (var s = sample.CreateDrawingSession())
                        {
                            tb.RadiusX = px; tb.RadiusY = px; tb.Center = new Vector2(px, px);
                            s.FillRectangle(0, 0, px * 2, px * 2, tb);
                        }
                        Shape = sample;
                    }
                    if (bgurl != "")
                    {
                        var img = LayerPaint.Img.Create(bgurl);
                        Texture = CanvasBitmap.CreateFromBytes(
                            device, img.PixelBuffer, img.PixelWidth, img.PixelHeight,
                            Windows.Graphics.DirectX.DirectXPixelFormat.B8G8R8A8UIntNormalized
                            );
                    }
                    else
                    {
                        Texture = null;
                    }
                    //fgurl = bgurl= "";
                }
            }
            catch (Exception e)
            {
                new Windows.UI.Popups.MessageDialog(e.ToString()).ShowMux();
            }

            Loadd();
        }
Ejemplo n.º 31
0
        public void draw(float x, float y, float width, float height, CanvasDrawingSession canvas, CanvasControl view, float f5)
        {
            bool          z;
            int           i;
            float         f6;
            CanvasControl view2 = view;

            checkColors();
            if (view2 == null)
            {
                z = false;
            }
            else
            {
                z = parents.Count > 0 && view2 == parents[0];
            }
            //if (f2 <= f4)
            {
                long j = 0;
                if (z)
                {
                    long elapsedRealtime = Environment.TickCount;
                    long j2 = elapsedRealtime - lastUpdateTime;
                    lastUpdateTime = elapsedRealtime;
                    j = j2 > 20 ? 17 : j2;
                    float f7 = animateToAmplitude;
                    float f8 = amplitude;
                    if (f7 != f8)
                    {
                        float f9  = animateAmplitudeDiff;
                        float f10 = f8 + j * f9;
                        amplitude = f10;
                        if (f9 > 0.0f)
                        {
                            if (f10 > f7)
                            {
                                amplitude = f7;
                            }
                        }
                        else if (f10 < f7)
                        {
                            amplitude = f7;
                        }
                        //view.Invalidate();
                    }
                    float f11 = animateToAmplitude;
                    float f12 = amplitude2;
                    if (f11 != f12)
                    {
                        float f13 = animateAmplitudeDiff2;
                        float f14 = f12 + j * f13;
                        amplitude2 = f14;
                        if (f13 > 0.0f)
                        {
                            if (f14 > f11)
                            {
                                amplitude2 = f11;
                            }
                        }
                        else if (f14 < f11)
                        {
                            amplitude2 = f11;
                        }
                        //view.Invalidate();
                    }
                    if (previousState != null)
                    {
                        float f15 = progressToState + j / 250.0f;
                        progressToState = f15;
                        if (f15 > 1.0f)
                        {
                            progressToState = 1.0f;
                            previousState   = null;
                        }
                        //view.Invalidate();
                    }
                }
                long j3 = j;
                int  i2 = 0;
                while (i2 < 2)
                {
                    if (i2 == 0 && previousState == null)
                    {
                        i = i2;
                    }
                    else
                    {
                        if (i2 == 0)
                        {
                            f6 = 1.0f - progressToState;
                            if (z)
                            {
                                previousState.update((int)(height - y), (int)(width - x), j3, amplitude);
                            }
                            //this.paint.setShader(this.previousState.shader);
                            shader = previousState.shader;
                        }
                        else
                        {
                            WeavingState weavingState = currentState;
                            if (weavingState != null)
                            {
                                f6 = previousState != null ? progressToState : 1.0f;
                                if (z)
                                {
                                    weavingState.update((int)(height - y), (int)(width - x), j3, amplitude);
                                }
                                //this.paint.setShader(this.currentState.shader);
                                shader = currentState.shader;
                            }
                            else
                            {
                                return;
                            }
                        }
                        float f16 = f6;
                        lineBlobDrawable.minRadius  = 0.0f;
                        lineBlobDrawable.maxRadius  = 2.0f + 2.0f * amplitude;
                        lineBlobDrawable1.minRadius = 0.0f;
                        lineBlobDrawable1.maxRadius = 3.0f + 9.0f * amplitude;
                        lineBlobDrawable2.minRadius = 0.0f;
                        lineBlobDrawable2.maxRadius = 3.0f + 9.0f * amplitude;
                        lineBlobDrawable.update(amplitude, 0.3f);
                        lineBlobDrawable1.update(amplitude, 0.7f);
                        lineBlobDrawable2.update(amplitude, 0.7f);
                        if (i2 == 1)
                        {
                            paint.A = (byte)(255.0f * f16);
                        }
                        else
                        {
                            paint.A = 255;
                        }
                        i = i2;

                        if (target == null || target.Size.Width != width)
                        {
                            target = new CanvasRenderTarget(canvas, width, height);
                        }

                        using (var session = target.CreateDrawingSession())
                        {
                            session.Clear(Colors.Transparent);

                            lineBlobDrawable.Draw(x, y, width, height, session, paint, y, f5);
                            paint.A = (byte)(f16 * 76.0f);
                            float dp  = (float)6.0f * amplitude2;
                            float dp2 = (float)6.0f * amplitude2;
                            float f22 = x;
                            lineBlobDrawable1.Draw(f22, y - dp, width, height, session, paint, y, f5);
                            lineBlobDrawable2.Draw(f22, y - dp2, width, height, session, paint, y, f5);
                        }

                        using (var layer = canvas.CreateLayer(new CanvasImageBrush(canvas, target)))
                        {
                            canvas.FillRectangle(0, 0, width, height, shader);
                        }
                    }
                    i2 = i + 1;
                }
            }
        }
Ejemplo n.º 32
0
	    private void CanvasAnimatedControl_OnCreateResources(CanvasAnimatedControl sender, CanvasCreateResourcesEventArgs args)
	    {
			// blobs
			_blobs = new List<Blob>();
			var rnd = new Random();
		    for (int i = 0; i < BlobCount; i++)
		    {
			    _blobs.Add(new Blob
			    {
				    Position = new Vector2((float) (rnd.NextDouble()*sender.Size.Width), (float) (rnd.NextDouble()*sender.Size.Height)),
				    Velocity = new Vector2(BlobVelocityScale *  (float) ((rnd.NextDouble()*3.0f) - 1.5f), BlobVelocityScale * (float) ((rnd.NextDouble()*3.0f) - 1.5f))
			    });
		    }
			// texture
		    var rgb = new CanvasRadialGradientBrush(sender, new[]
		    {
				new CanvasGradientStop
				{
					Color = Color.FromArgb(255, 128, 128, 255),
					Position = 0.0f
				},
				new CanvasGradientStop
				{
					Color = Color.FromArgb(128, 128, 128, 255),
					Position = 0.6f
				},
				new CanvasGradientStop
				{
					Color = Color.FromArgb(0, 128, 128, 255),
					Position = 1.0f
				}
		    });
		    rgb.RadiusX = rgb.RadiusY = BlobSize;
		    _blobBrush = rgb;
			// table transfer table
			ttt = new List<float>();
			for (int i = 0; i < 100; i++)
			{
				ttt.Add(i < Threshold ? 0.0f : 1.0f);
			}
			// setup
			_blobRenderTarget = new CanvasRenderTarget(sender, sender.Size);
			_pre = new PremultiplyEffect {Source = _blobRenderTarget};
			_tte = new TableTransferEffect {ClampOutput = true, Source = _pre};
			_tte.AlphaTable = _tte.RedTable = _tte.GreenTable = _tte.BlueTable = ttt.ToArray();
			_un = new UnPremultiplyEffect {Source = _tte};
			_gbe = new GaussianBlurEffect {BlurAmount = 8.0f, Source = _un};
		    _mask = new CanvasImageBrush(sender) {SourceRectangle = new Rect(new Point(), sender.Size)};
	    }
Ejemplo n.º 33
0
        void CreateRadialGradient(ICanvasResourceCreator resourceCreator)
        {
            radialGradient = new CanvasCommandList(resourceCreator);

            using (var drawingSession = radialGradient.CreateDrawingSession())
            {
                var sqrt2 = (float)Math.Sqrt(2);

                var brush = new CanvasRadialGradientBrush(resourceCreator, Colors.White, Colors.Black)
                {
                    Center = tigerSize / 2,

                    RadiusX = tigerSize.X / sqrt2,
                    RadiusY = tigerSize.Y / sqrt2,
                };

                drawingSession.FillRectangle(bitmapTiger.Bounds, brush);
            }
        }
Ejemplo n.º 34
0
 internal UGRadialGradientBrush(CanvasRadialGradientBrush native)
 => _native = native;