/// <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);
        }
Esempio n. 2
0
 public bool Equals(CommonRadialGradientBrush other)
 {
     return(other != null &&
            base.Equals(other) &&
            Center.Equals(other.Center) &&
            GradientOrigin.Equals(other.GradientOrigin) &&
            RadiusX == other.RadiusX &&
            RadiusY == other.RadiusY);
 }
Esempio n. 3
0
        public override int GetHashCode()
        {
            var hashCode = base.GetHashCode();

            unchecked {
                hashCode = hashCode * -1521134295 + Center.GetHashCode();
                hashCode = hashCode * -1521134295 + GradientOrigin.GetHashCode();
                hashCode = hashCode * -1521134295 + RadiusX.GetHashCode();
                hashCode = hashCode * -1521134295 + RadiusY.GetHashCode();
            }
            return(hashCode);
        }