/// <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); }
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); }
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); }