/// <summary> /// 重写PrimitiveAdd /// </summary> /// <param name="canvas"></param> protected override void PrimitiveDraw(Canvas canvas) { this._columnElementList.Clear(); Brush legendBrush = ChartHelper.CreateColumn(this).Fill.Clone(); base.AddLegendItem(new SeriesLegendItem(legendBrush, base.Title, this)); if (base._values == null || base._values.Count == 0) { return; } switch (this._orientation) { case SeriesOrientation.Horizontal: this.PrimitiveDrawHorizontal(canvas); break; case SeriesOrientation.Vertical: this.PrimitiveDrawVertical(canvas); break; default: throw new NotImplementedException(this._orientation.ToString()); } }
private void PrimitiveDrawHorizontal(Canvas canvas) { double x, y, size; Rectangle columnElement; foreach (var value in base._values) { x = this.AxisX.GetX(value); if (!ChartHelper.DoubleHasValue(x)) { continue; } y = this.AxisY.GetY(value); if (!ChartHelper.DoubleHasValue(y)) { continue; } columnElement = ChartHelper.CreateColumn(this); columnElement.Visibility = base.Visibility; if (value != null) { ChartHelper.SetColumnTooltipText(this, value.TooltipText, columnElement); } if (ChartHelper.DoubleHasValue(this._size)) { columnElement.Height = this._size; } canvas.Children.Add(columnElement); this._columnElementList.Add(columnElement); if (this.AxisY.IsAxisYLeft()) { size = x; Canvas.SetLeft(columnElement, ChartConstant.ZERO_D); } else { size = canvas.Width - x; Canvas.SetRight(columnElement, ChartConstant.ZERO_D); } if (size < ChartConstant.ZERO_D) { size = ChartConstant.ZERO_D; } columnElement.Width = size; Canvas.SetTop(columnElement, y); } }
/// <summary> /// 重写StyleChanged /// </summary> /// <param name="style">新样式</param> protected override void StyleChanged(Style style) { base.RemoveLegendItem(); Brush legendBrush = ChartHelper.CreateColumn(this).Fill.Clone(); base.AddLegendItem(new SeriesLegendItem(legendBrush, base.Title, this)); foreach (var columnElement in this._columnElementList) { columnElement.Style = style; } }
private Dictionary <IColumnSeries, double> GetSeriesSizeDic(ChartCollection <ISeries> seriesCollection) { Dictionary <IColumnSeries, double> seriesSizeDic = new Dictionary <IColumnSeries, double>(); IColumnSeries columnSeries; Rectangle templateColumn; double seriesSize; foreach (var series in seriesCollection) { if (!(series is IColumnSeries) | series.AxisX != this && series.AxisY != this) { continue; } columnSeries = (IColumnSeries)series; if (seriesSizeDic.ContainsKey(columnSeries)) { continue; } columnSeries.Size = double.NaN; templateColumn = ChartHelper.CreateColumn(columnSeries); seriesSize = double.NaN; if (series.AxisX == this) { seriesSize = templateColumn.Width; } else if (series.AxisY == this) { seriesSize = templateColumn.Height; } seriesSizeDic.Add(columnSeries, seriesSize); } return(seriesSizeDic); }