public override void Measure( IChartView <TDrawingContext> view, IAxis <TDrawingContext> xAxis, IAxis <TDrawingContext> yAxis, SeriesContext <TDrawingContext> context, HashSet <IDrawable <TDrawingContext> > drawBucket) { var drawLocation = view.Core.DrawMaringLocation; var drawMarginSize = view.Core.DrawMarginSize; var xScale = new ScaleContext(drawLocation, drawMarginSize, xAxis.Orientation, xAxis.DataBounds); var yScale = new ScaleContext(drawLocation, drawMarginSize, yAxis.Orientation, yAxis.DataBounds); float uw = xScale.ScaleToUi(1f) - xScale.ScaleToUi(0f); float uwm = 0.5f * uw; float sw = Stroke?.StrokeWidth ?? 0; float p = yScale.ScaleToUi(unchecked ((float)Pivot)); var pos = context.GetColumnPostion(this); var count = context.GetColumnSeriesCount(); float cp = 0f; if (!IgnoresColumnPosition && count > 1) { uw = uw / count; uwm = 0.5f * uw; cp = (pos - (count / 2f)) * uw + uwm; } if (uw > MaxColumnWidth) { uw = unchecked ((float)MaxColumnWidth); uwm = uw / 2f; } if (Fill != null) { view.CoreCanvas.AddPaintTask(Fill); } if (Stroke != null) { view.CoreCanvas.AddPaintTask(Stroke); } var chartAnimation = new Animation(view.EasingFunction, view.AnimationsSpeed); var ts = TransitionsSetter ?? SetDefaultTransitions; foreach (var point in GetPonts()) { var x = xScale.ScaleToUi(point.X); var y = yScale.ScaleToUi(point.Y); float b = Math.Abs(y - p); if (point.Visual == null) { var r = new TVisual { X = x - uwm + cp, Y = p, Width = uw, Height = 0 }; ts(r, chartAnimation); point.HoverArea = new HoverArea(); point.Visual = r; if (Fill != null) { Fill.AddGeometyToPaintTask(r); } if (Stroke != null) { Stroke.AddGeometyToPaintTask(r); } } var sizedGeometry = (TVisual)point.Visual; var cy = point.Y > Pivot ? y : y - b; sizedGeometry.X = x - uwm + cp; sizedGeometry.Y = cy; sizedGeometry.Width = uw; sizedGeometry.Height = b; point.HoverArea.SetDimensions(x - uwm + cp, cy, uw, b); OnPointMeasured(point, sizedGeometry); drawBucket.Add(sizedGeometry); } if (HighlightFill != null) { view.CoreCanvas.AddPaintTask(HighlightFill); } if (HighlightStroke != null) { view.CoreCanvas.AddPaintTask(HighlightStroke); } }