/// <summary> /// Convert a SoluiNet.BrushDefinition to <see cref="Brush"/>. /// </summary> /// <param name="soluiNetBrush">The SoluiNet.BrushDefinition.</param> /// <returns>Returns a <see cref="Brush"/> object which represents the overgiven SoluiNet.BrushDefinition.</returns> public static Brush ToBrush(this SoluiNetBrushDefinitionType soluiNetBrush) { if (soluiNetBrush == null) { throw new ArgumentNullException(nameof(soluiNetBrush)); } Brush brush = null; switch (soluiNetBrush.type) { case SoluiNetBrushType.SimpleLinearGradient: brush = new LinearGradientBrush(soluiNetBrush.startColour.ToColour(), soluiNetBrush.endColour.ToColour(), Convert.ToDouble(soluiNetBrush.angle)); break; case SoluiNetBrushType.LinearGradient: brush = new LinearGradientBrush(); foreach (var gradientStop in soluiNetBrush.SoluiNetGradientStop) { (brush as LinearGradientBrush).GradientStops.Add(new GradientStop(gradientStop.colour.ToColour(), Convert.ToDouble(gradientStop.offset))); } (brush as LinearGradientBrush).StartPoint = new System.Windows.Point(Convert.ToDouble(soluiNetBrush.SoluiNetStartPoint.xAxis), Convert.ToDouble(soluiNetBrush.SoluiNetStartPoint.yAxis)); (brush as LinearGradientBrush).EndPoint = new System.Windows.Point(Convert.ToDouble(soluiNetBrush.SoluiNetEndPoint.xAxis), Convert.ToDouble(soluiNetBrush.SoluiNetEndPoint.yAxis)); break; } return(brush); }
/// <summary> /// Read from brush definition and prefill fields. /// </summary> /// <param name="brushDefinition">The brush definition.</param> public void ReadFromBrushDefinition(SoluiNetBrushDefinitionType brushDefinition) { if (!brushDefinition.typeSpecified) { return; } switch (brushDefinition.type) { case SoluiNetBrushType.SimpleLinearGradient: this.Angle.Value = brushDefinition.angleSpecified ? brushDefinition.angle : 0.75; this.StartColour.SelectedColor = brushDefinition.startColour.ToColour(); this.EndColour.SelectedColor = brushDefinition.endColour.ToColour(); break; } }
/// <summary> /// Get brush definition for the selected values of this control. /// </summary> /// <returns>Returns a <see cref="SoluiNetBrushDefinitionType"/> object which represents the selected brush settings.</returns> public SoluiNetBrushDefinitionType GetBrushDefinition() { var brushDefinition = new SoluiNetBrushDefinitionType(); if (this.BrushDefinitionTypeTabs.SelectedIndex == 0) { brushDefinition.typeSpecified = true; brushDefinition.type = SoluiNetBrushType.SimpleLinearGradient; brushDefinition.startColour = this.StartColour.SelectedColor.HasValue ? this.StartColour.SelectedColor.Value.ToHexValue() : "#FFFFFF"; brushDefinition.endColour = this.EndColour.SelectedColor.HasValue ? this.EndColour.SelectedColor.Value.ToHexValue() : "#FFFFFF"; brushDefinition.angleSpecified = true; brushDefinition.angle = this.Angle.Value ?? 0.75; } else if (this.BrushDefinitionTypeTabs.SelectedIndex == 1) { throw new NotImplementedException(); } return(brushDefinition); }