/// <summary> /// Draw the specified area with the specified Drawing toolkit tk. /// </summary> /// <param name="tk">IDrawingToolkit.</param> /// <param name="area">Area.</param> public override void Draw(IDrawingToolkit tk, Area area) { double linepos; if (!UpdateDrawArea(tk, area, Area)) { return; } tk.Begin(); if (needle == null) { needle = tk.CreateSurfaceFromIcon(Icons.TimelineNeedleUP); } if (Selected) { tk.FillColor = App.Current.Style.ThemeContrastDisabled; tk.StrokeColor = App.Current.Style.ThemeContrastDisabled; } else { tk.FillColor = LineColor; tk.StrokeColor = LineColor; } tk.LineWidth = Sizes.TimelineLineSize; linepos = OffsetY + Height / 2 + Sizes.TimelineLineSize / 2; if (StopX - StartX <= needle.Width / 2) { double c = movingPos == SelectionPosition.Left ? StopX : StartX; tk.DrawSurface(new Point(c - needle.Width / 2, linepos - 9), Sizes.TimelineNeedleUpWidth, Sizes.TimelineNeedleUpHeight, needle, ScaleMode.AspectFit); } else { tk.DrawLine(new Point(StartX, linepos), new Point(StopX, linepos)); tk.DrawSurface(new Point(StartX - needle.Width / 2, linepos - 9), Sizes.TimelineNeedleUpWidth, Sizes.TimelineNeedleUpHeight, needle, ScaleMode.AspectFit); tk.DrawSurface(new Point(StopX - needle.Width / 2, linepos - 9), Sizes.TimelineNeedleUpWidth, Sizes.TimelineNeedleUpHeight, needle, ScaleMode.AspectFit); } if (ShowName) { tk.FontSize = Sizes.TimelineFontSize; tk.FontWeight = FontWeight.Bold; tk.FillColor = App.Current.Style.TextBaseDisabled; tk.StrokeColor = App.Current.Style.TextBaseDisabled; tk.DrawText(new Point(StartX, OffsetY), StopX - StartX, Height / 2, TimeNode.Name); } tk.End(); }