Ejemplo n.º 1
0
        /// <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());
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        /// <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;
            }
        }
Ejemplo n.º 4
0
        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);
        }