/// <summary> /// Copy base style from BaseStyle source. /// </summary> /// <param name="source">The BaseStyle source object.</param> public ArrowStyle(BaseStyle source) { Stroke = ArgbColor.Create (source.Stroke.A, source.Stroke.R, source.Stroke.G, source.Stroke.B); Fill = ArgbColor.Create (source.Fill.A, source.Fill.R, source.Fill.G, source.Fill.B); Thickness = source.Thickness; LineCap = source.LineCap; Dashes = source.Dashes != null ? source.Dashes : default(string); DashOffset = source.DashOffset; }
/// <summary> /// /// </summary> /// <param name="style"></param> /// <param name="thickness"></param> /// <returns></returns> private static Pen CreatePen(BaseStyle style, double thickness) { var brush = CreateBrush(style.Stroke); var pen = new Pen(brush, thickness); switch (style.LineCap) { case LineCap.Flat: pen.StartLineCap = PenLineCap.Flat; pen.EndLineCap = PenLineCap.Flat; pen.DashCap = PenLineCap.Flat; break; case LineCap.Square: pen.StartLineCap = PenLineCap.Square; pen.EndLineCap = PenLineCap.Square; pen.DashCap = PenLineCap.Square; break; case LineCap.Round: pen.StartLineCap = PenLineCap.Round; pen.EndLineCap = PenLineCap.Round; pen.DashCap = PenLineCap.Round; break; } pen.DashStyle = new DashStyle( ShapeStyle.DashesToDoubleArray(style.Dashes), style.DashOffset); pen.DashStyle.Offset = style.DashOffset; pen.Freeze(); return pen; }
/// <summary> /// Creates a new instance of the ArrowStyle class. /// </summary> /// <param name="name">The arrow style name.</param> /// <param name="source">The BaseStyle source object.</param> /// <param name="arrowType">The arrow type.</param> /// <param name="isStroked">The arow shape stroke flag.</param> /// <param name="isFilled">The arow shape fill flag.</param> /// <param name="radiusX">The arrow X axis radius.</param> /// <param name="radiusY">The arrow Y axis radius.</param> /// <returns>The new instance of the ArrowStyle class.</returns> public static ArrowStyle Create( string name, BaseStyle source, ArrowType arrowType = ArrowType.None, bool isStroked = true, bool isFilled = false, double radiusX = 5.0, double radiusY = 5.0) { return new ArrowStyle(source) { Name = name, ArrowType = arrowType, IsStroked = isStroked, IsFilled = isFilled, RadiusX = radiusX, RadiusY = radiusY }; }
/// <summary> /// /// </summary> /// <param name="style"></param> /// <param name="scale"></param> /// <returns></returns> private Pen ToPen(BaseStyle style, Func<double, float> scale) { var pen = new Pen(ToColor(style.Stroke), (float)(style.Thickness)); switch (style.LineCap) { case Kaliber3D.Render.LineCap.Flat: pen.StartCap = System.Drawing.Drawing2D.LineCap.Flat; pen.EndCap = System.Drawing.Drawing2D.LineCap.Flat; pen.DashCap = System.Drawing.Drawing2D.DashCap.Flat; break; case Kaliber3D.Render.LineCap.Square: pen.StartCap = System.Drawing.Drawing2D.LineCap.Square; pen.EndCap = System.Drawing.Drawing2D.LineCap.Square; pen.DashCap = System.Drawing.Drawing2D.DashCap.Flat; break; case Kaliber3D.Render.LineCap.Round: pen.StartCap = System.Drawing.Drawing2D.LineCap.Round; pen.EndCap = System.Drawing.Drawing2D.LineCap.Round; pen.DashCap = System.Drawing.Drawing2D.DashCap.Round; break; } if (style.Dashes != null) { // TODO: Convert to correct dash values. pen.DashPattern = ShapeStyle.DashesToFloatArray(style.Dashes); } pen.DashOffset = (float)style.DashOffset; return pen; }