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); }
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); }
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); }
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); //} }
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()); }
private void Dispose(bool disposing) { if (_canvasRadialGradientBrush != null) { _canvasRadialGradientBrush.Dispose(); _canvasRadialGradientBrush = null; } }
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()); }
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); } }
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()); }
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); }
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); }
/// <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); }
/// <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); }
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); }
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); }
private void Dispose(bool disposing) { if (_canvasRadialGradientBrush != null) { try { _canvasRadialGradientBrush.Dispose(); } catch { // Ignore } finally { _canvasRadialGradientBrush = null; } } }
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; }
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); }
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); } }
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); }
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); }
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); } }
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); }
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; }
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); }
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); }
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); }
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(); }
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; } } }
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)}; }
internal UGRadialGradientBrush(CanvasRadialGradientBrush native) => _native = native;