protected override void OnRender(DrawingContext dc) { var pen = new Pen(this.Fill, this.PenWidth); pen.Freeze(); var line = new Line(this.ActualWidth, this.ActualHeight, this.ReservedSpace, this.Placement, this.IsDirectionReversed); Vector offset = new Vector(0, 0); switch (this.Placement) { case TickBarPlacement.Left: offset = new Vector(this.ActualWidth, 0); break; case TickBarPlacement.Right: offset = new Vector(-1 * this.ActualWidth, 0); break; case TickBarPlacement.Top: offset = new Vector(0, this.ActualHeight); break; case TickBarPlacement.Bottom: offset = new Vector(0, -1 * this.ActualHeight); break; } foreach (var tick in this.AllTicks) { var p = TickHelper.ToPos(tick, this.Minimum, this.Maximum, line).Round(0); var l = new Line(p, p + offset); dc.DrawLine(pen, l); } }
protected override void OnRender(DrawingContext dc) { var pen = new Pen(this.Fill, this.PenWidth); pen.Freeze(); var arc = Arc.Fill(this.RenderSize, this.MinAngle, this.MaxAngle, this.IsDirectionReversed); for (int i = 0; i < this.AllTicks.Count; i++) { var tick = this.AllTicks[i]; var angle = TickHelper.ToAngle(tick, this.Minimum, this.Maximum, arc); var po = arc.GetPoint(angle, -this.ReservedSpace / 2); var pi = arc.GetPoint(angle, -this.ReservedSpace / 2 - this.TickLength); var line = new Line(po, pi); dc.DrawLine(pen, line); } }
internal static void DrawLine(this DrawingContext dc, Pen pen, Line l) { dc.DrawLine(pen, l.StartPoint, l.EndPoint); }
internal static Line Transform(this RotateTransform transform, Line line) { var p1 = transform.Transform(line.StartPoint); var p2 = transform.Transform(line.EndPoint); return new Line(p1, p2); }