public static void DrawSortableValue(this DrawingContext dc, SortableVmStyle sortableVmStyle, SortableItemVm sortableItemVm, double stageRenderWidth, double stageRenderHeight) { if ((stageRenderHeight <= 0) || (stageRenderHeight <= 0)) { return; } if (sortableItemVm.StagePos == StagePos.Missing) { return; } var radius = RenderUtils.ChildRenderHeight( parentVmHeight: sortableVmStyle.StageVmHeight(), childVmHeight: sortableVmStyle.Radius, parentRenderHeight: stageRenderHeight); var sortableItemPosition = sortableItemVm.GetSortableItemPosition( sortableVmStyle: sortableVmStyle, stageRenderWidth: stageRenderWidth, stageRenderHeight: stageRenderHeight); dc.DrawEllipse(sortableItemVm.BackgroundBrush, SortableBorderPen, sortableItemPosition, radius, radius); if (sortableItemVm.ShowLabel) { var txt = new FormattedText(sortableItemVm.Label.ToString(), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, SortableItemVm.Typeface, radius, sortableItemVm.ForegroundBrush, 1.0); var textUpLeft = new Point( x: sortableItemPosition.X - txt.Width / 2, y: sortableItemPosition.Y - txt.Height / 2); dc.DrawText(txt, textUpLeft); } }
public static void DrawSortableValueAnimate( this DrawingContext dc, double animationPct, SortableVmStyle sortableVmStyle, SortableItemVm sortableItemVmOld, SortableItemVm sortableItemVm, double stageRenderWidth, double stageRenderHeight) { if ((stageRenderHeight <= 0) || (stageRenderHeight <= 0)) { return; } if (sortableItemVm.StagePos == StagePos.Missing) { return; } var radius = RenderUtils.ChildRenderHeight(parentVmHeight: sortableVmStyle.StageVmHeight(), childVmHeight: sortableVmStyle.Radius, parentRenderHeight: stageRenderHeight); var centerO = sortableItemVmOld.GetSortableItemPosition(sortableVmStyle, stageRenderWidth, stageRenderHeight); var centerN = sortableItemVm.GetSortableItemPosition(sortableVmStyle, stageRenderWidth, stageRenderHeight); var center = centerO.Interpolate(centerN, animationPct); dc.DrawEllipse(sortableItemVm.BackgroundBrush, null, center, radius, radius); if (sortableItemVm.ShowLabel) { var txt = new FormattedText(sortableItemVm.Label.ToString(), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, SortableItemVm.Typeface, radius, sortableItemVm.ForegroundBrush, 1.0); var upLeft = new Point(center.X - txt.Width / 2, center.Y - txt.Height / 2); dc.DrawText(txt, upLeft); } }