/// <summary> /// Returns whether or not an enumeration instance a valid value. /// This method is designed to be used with ValidateValueCallback, and thus /// matches it's prototype. /// </summary> /// <param name="valueObject"> /// Enumeration value to validate. /// </param> /// <returns> 'true' if the enumeration contains a valid value, 'false' otherwise. </returns> public static bool IsColorInterpolationModeValid(object valueObject) { ColorInterpolationMode value = (ColorInterpolationMode)valueObject; return((value == ColorInterpolationMode.ScRgbLinearInterpolation) || (value == ColorInterpolationMode.SRgbLinearInterpolation)); }
/// <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); }
/// <summary> /// Converts a WPF <see cref="ColorInterpolationMode"/> to a Win2D <see cref="CanvasColorSpace"/>. /// https://msdn.microsoft.com/en-us/library/system.windows.media.colorinterpolationmode(v=vs.110).aspx /// http://microsoft.github.io/Win2D/html/T_Microsoft_Graphics_Canvas_CanvasColorSpace.htm /// </summary> /// <param name="colorspace"><see cref="ColorInterpolationMode"/> mode.</param> /// <returns><see cref="CanvasColorSpace"/> space.</returns> public static CanvasColorSpace ToCanvasColorSpace(this ColorInterpolationMode colorspace) { switch (colorspace) { case ColorInterpolationMode.ScRgbLinearInterpolation: return(CanvasColorSpace.ScRgb); case ColorInterpolationMode.SRgbLinearInterpolation: return(CanvasColorSpace.Srgb); } return(CanvasColorSpace.Custom); }
public override int GetHashCode() { var hashCode = base.GetHashCode(); unchecked { foreach (var stop in GradientStops) { hashCode = hashCode * -1521134295 + stop.GetHashCode(); } hashCode = hashCode * -1521134295 + ColorInterpolationMode.GetHashCode(); hashCode = hashCode * -1521134295 + MappingMode.GetHashCode(); hashCode = hashCode * -1521134295 + SpreadMethod.GetHashCode(); } return(hashCode); }
private void InitializeGradientBrushProperties(SerializationInfo info) { object obj = info.GetValue("SpreadMethod", typeof(int)); if (obj != null) { spreadMethod = (GradientSpreadMethod)obj; } obj = info.GetValue("InterpolationMode", typeof(int)); if (obj != null) { interpolationMode = (ColorInterpolationMode)obj; } obj = info.GetValue("Opacity", typeof(double)); if (obj != null) { opacity = (double)obj; } }
/// <summary> /// Initializes a new instance of the <see cref="Palette"/> class. /// </summary> /// <param name="paletteEntries">The palette that is wrapped by this palette.</param> /// <param name="mode">The palette mode.</param> public Palette(IList <PaletteEntry> paletteEntries, PaletteMode mode) : base(paletteEntries) { Mode = mode; ColorInterpolationMode = ColorInterpolationMode.SRgbLinearInterpolation; }
/// <summary> /// Initializes a new instance of the <see cref="Palette"/> class. /// </summary> /// <param name="mode">The palette mode.</param> public Palette(PaletteMode mode) { Mode = mode; ColorInterpolationMode = ColorInterpolationMode.SRgbLinearInterpolation; }
internal static Color GetColorAt(this GradientStopCollection stops, double offset, ColorInterpolationMode colorInterpolationMode) { if (stops == null || stops.Count == 0) { return(Color.FromArgb(0, 0, 0, 0)); } if (stops.Count == 1) { return(stops[0].Color); } var lowerOffset = double.MinValue; var upperOffset = double.MaxValue; var lowerIndex = -1; var upperIndex = -1; for (var i = 0; i < stops.Count; i++) { var gradientStop = stops[i]; if (lowerOffset < gradientStop.Offset && gradientStop.Offset <= offset) { lowerOffset = gradientStop.Offset; lowerIndex = i; } if (upperOffset > gradientStop.Offset && gradientStop.Offset >= offset) { upperOffset = gradientStop.Offset; upperIndex = i; } } if (lowerIndex == -1) { return(stops[upperIndex].Color); } else if (upperIndex == -1) { return(stops[lowerIndex].Color); } if (lowerIndex == upperIndex) { return(stops[lowerIndex].Color); } var clr1 = stops[lowerIndex].Color; var clr2 = stops[upperIndex].Color; var den = upperOffset - lowerOffset; var wt1 = (float)((upperOffset - offset) / den); var wt2 = (float)((offset - lowerOffset) / den); var clr = default(Color); switch (colorInterpolationMode) { case ColorInterpolationMode.SRgbLinearInterpolation: clr = Color.FromArgb( (byte)(wt1 * clr1.A + wt2 * clr2.A), (byte)(wt1 * clr1.R + wt2 * clr2.R), (byte)(wt1 * clr1.G + wt2 * clr2.G), (byte)(wt1 * clr1.B + wt2 * clr2.B)); break; case ColorInterpolationMode.ScRgbLinearInterpolation: clr = clr1 * wt1 + clr2 * wt2; break; } return(clr); }
public static IntPtr Box_ColorInterpolationMode(ColorInterpolationMode val) { IntPtr ret = NoesisGUI_PINVOKE.Box_ColorInterpolationMode((int)val); return(ret); }
public static ColorInterpolationMode Unbox_ColorInterpolationMode(IntPtr val) { ColorInterpolationMode ret = (ColorInterpolationMode)NoesisGUI_PINVOKE.Unbox_ColorInterpolationMode(val); return(ret); }
private void InitializeGradientBrush(GradientBrush gradientBrush) { spreadMethod = gradientBrush.SpreadMethod; interpolationMode = gradientBrush.ColorInterpolationMode; opacity = gradientBrush.Opacity; }
internal static Color GetColorAt(this GradientStopCollection stops, double offset, ColorInterpolationMode colorInterpolationMode) { if (stops == null || stops.Count == 0) { return Color.FromArgb(0, 0, 0, 0); } if (stops.Count == 1) { return stops[0].Color; } var lowerOffset = double.MinValue; var upperOffset = double.MaxValue; var lowerIndex = -1; var upperIndex = -1; for (var i = 0; i < stops.Count; i++) { var gradientStop = stops[i]; if (lowerOffset < gradientStop.Offset && gradientStop.Offset <= offset) { lowerOffset = gradientStop.Offset; lowerIndex = i; } if (upperOffset > gradientStop.Offset && gradientStop.Offset >= offset) { upperOffset = gradientStop.Offset; upperIndex = i; } } if (lowerIndex == -1) { return stops[upperIndex].Color; } else if (upperIndex == -1) { return stops[lowerIndex].Color; } if (lowerIndex == upperIndex) { return stops[lowerIndex].Color; } var clr1 = stops[lowerIndex].Color; var clr2 = stops[upperIndex].Color; var den = upperOffset - lowerOffset; var wt1 = (float)((upperOffset - offset) / den); var wt2 = (float)((offset - lowerOffset) / den); var clr = default(Color); switch (colorInterpolationMode) { case ColorInterpolationMode.SRgbLinearInterpolation: clr = Color.FromArgb( (byte)(wt1 * clr1.A + wt2 * clr2.A), (byte)(wt1 * clr1.R + wt2 * clr2.R), (byte)(wt1 * clr1.G + wt2 * clr2.G), (byte)(wt1 * clr1.B + wt2 * clr2.B)); break; case ColorInterpolationMode.ScRgbLinearInterpolation: clr = clr1 * wt1 + clr2 * wt2; break; } return clr; }