public static AM.IBrush?ToRadialGradientBrush(this TwoPointConicalGradientShader twoPointConicalGradientShader) { if (twoPointConicalGradientShader.Colors != null && twoPointConicalGradientShader.ColorPos != null) { var radialGradientBrush = new AM.RadialGradientBrush { SpreadMethod = twoPointConicalGradientShader.Mode.ToGradientSpreadMethod() }; var gradientOrigin = twoPointConicalGradientShader.Start.ToPoint(); radialGradientBrush.GradientOrigin = new A.RelativePoint(gradientOrigin, A.RelativeUnit.Relative); var center = twoPointConicalGradientShader.End.ToPoint(); radialGradientBrush.Center = new A.RelativePoint(center, A.RelativeUnit.Relative); // TODO: twoPointConicalGradientShader.StartRadius radialGradientBrush.Radius = twoPointConicalGradientShader.EndRadius; radialGradientBrush.GradientStops = new AM.GradientStops(); for (int i = 0; i < twoPointConicalGradientShader.Colors.Length; i++) { var color = twoPointConicalGradientShader.Colors[i].ToColor(); var offset = twoPointConicalGradientShader.ColorPos[i]; var gradientStop = new AM.GradientStop(color, offset); radialGradientBrush.GradientStops.Add(gradientStop); } // TODO: radialGradientBrush.LocalMatrix return(radialGradientBrush); } return(null); }
public static AM.IBrush?ToLinearGradientBrush(this LinearGradientShader linearGradientShader) { if (linearGradientShader.Colors != null && linearGradientShader.ColorPos != null) { var linearGradientBrush = new AM.LinearGradientBrush { SpreadMethod = linearGradientShader.Mode.ToGradientSpreadMethod() }; var startPoint = linearGradientShader.Start.ToPoint(); linearGradientBrush.StartPoint = new A.RelativePoint(startPoint, A.RelativeUnit.Relative); var endPoint = linearGradientShader.End.ToPoint(); linearGradientBrush.EndPoint = new A.RelativePoint(endPoint, A.RelativeUnit.Relative); linearGradientBrush.GradientStops = new AM.GradientStops(); for (int i = 0; i < linearGradientShader.Colors.Length; i++) { var color = linearGradientShader.Colors[i].ToColor(); var offset = linearGradientShader.ColorPos[i]; var gradientStop = new AM.GradientStop(color, offset); linearGradientBrush.GradientStops.Add(gradientStop); } // TODO: linearGradientShader.LocalMatrix return(linearGradientBrush); } return(null); }