コード例 #1
0
ファイル: AxisAbs.cs プロジェクト: windygu/UtilZ.DotnetEx
        /// <summary>
        /// 获取指定项在X轴的坐标值
        /// </summary>
        /// <param name="item">目标项</param>
        /// <returns>指定项在X轴的坐标值</returns>
        internal double GetX(IChartItem item)
        {
            var result = this.PrimitiveGetX(item);

            result += this._axisCanvas.Margin.Left;
            return(result);
        }
コード例 #2
0
ファイル: NumberAxis.cs プロジェクト: windygu/UtilZ.DotnetEx
        private double GetAxis(IChartItem item, bool x, double axisSize)
        {
            if (this._axisData == null)
            {
                return(double.NaN);
            }

            object obj = ChartHelper.GetChartItemAxisValue(item, x);

            if (item == null)
            {
                return(double.NaN);
            }

            double value = ChartHelper.ConvertToDouble(obj);

            if (!ChartHelper.DoubleHasValue(value))
            {
                return(double.NaN);
            }

            double result = axisSize * (value - this._axisData.MinValue) / this._axisData.Area;

            if (base.Orientation == AxisLabelOrientation.BottomToTop ||
                base.Orientation == AxisLabelOrientation.RightToLeft)
            {
                result = axisSize - result;
            }

            return(result);
        }
コード例 #3
0
        /// <summary>
        /// 获取IChartItem中坐标轴的值
        /// </summary>
        /// <param name="item">目标项</param>
        /// <param name="x">X轴为true;Y轴为false</param>
        /// <returns>IChartItem中坐标轴的值</returns>
        public static object GetChartItemAxisValue(IChartItem item, bool x)
        {
            if (item == null)
            {
                return(null);
            }
            ;
            object value;

            if (item is IChartAxisValue)
            {
                var chartAxisValue = (IChartAxisValue)item;
                if (x)
                {
                    value = chartAxisValue.GetXValue();
                }
                else
                {
                    value = chartAxisValue.GetYValue();
                }
            }
            else if (item is IChartChildValue)
            {
                value = ((IChartChildValue)item).GetValue();
            }
            else
            {
                throw new NotSupportedException($"类型{item.GetType().FullName}未实现{nameof(IChartValue)}或{nameof(IChartChildValue)}接口");
            }

            return(value);
        }
コード例 #4
0
        private double GetAxis(IChartItem item, bool x, double axisSize)
        {
            if (this._axisData == null)
            {
                return(double.NaN);
            }

            object obj = ChartHelper.GetChartItemAxisValue(item, x);

            if (item == null)
            {
                return(double.NaN);
            }

            DateTime?value = ChartHelper.ConvertToDateTime(obj);

            if (value == null)
            {
                return(double.NaN);
            }

            //计算AxisOrientation.LeftToRight或TopToBottom
            double result = axisSize * (value.Value - this._axisData.MinValue).TotalMilliseconds / this._axisData.Area.TotalMilliseconds;

            if (base.Orientation == AxisLabelOrientation.RightToLeft ||
                base.Orientation == AxisLabelOrientation.BottomToTop)
            {
                result = axisSize - result;
            }

            return(result);
        }
コード例 #5
0
        private double GetAxis(IChartItem item, bool x)
        {
            if (item == null || !(item is IChartAxisValue))
            {
                return(double.NaN);
            }

            var    chartAxisValue = (IChartAxisValue)item;
            object labelAxisItem;

            if (x)
            {
                labelAxisItem = chartAxisValue.GetXValue();
            }
            else
            {
                labelAxisItem = chartAxisValue.GetYValue();
            }

            if (labelAxisItem == null)
            {
                labelAxisItem = this._nullLabelAxisItem;
            }

            LabelSeriesItem labelSeriesItem;

            if (!this._axisData.TryGetValue(labelAxisItem, out labelSeriesItem))
            {
                return(double.NaN);
            }

            double result;

            if (labelSeriesItem.TryGetValue(chartAxisValue, out result))
            {
                return(result);
            }

            return(double.NaN);
        }
コード例 #6
0
 public ProductRepository(IProduct p, IChartItem CI)
 {
     prod = p;
     ci   = CI;
 }
コード例 #7
0
ファイル: NumberAxis.cs プロジェクト: windygu/UtilZ.DotnetEx
 /// <summary>
 /// 获取指定项在Y轴的坐标值
 /// </summary>
 /// <param name="item">目标项</param>
 /// <returns>指定项在Y轴的坐标值</returns>
 protected override double PrimitiveGetY(IChartItem item)
 {
     return(this.GetAxis(item, false, base._axisCanvas.Height));
 }
コード例 #8
0
ファイル: NumberAxis.cs プロジェクト: windygu/UtilZ.DotnetEx
 /// <summary>
 /// 获取指定项在X轴的坐标值
 /// </summary>
 /// <param name="item">目标项</param>
 /// <returns>指定项在X轴的坐标值</returns>
 protected override double PrimitiveGetX(IChartItem item)
 {
     return(this.GetAxis(item, true, base._axisCanvas.Width));
 }
コード例 #9
0
 /// <summary>
 /// 获取指定项在Y轴的坐标值
 /// </summary>
 /// <param name="item">目标项</param>
 /// <returns>指定项在Y轴的坐标值</returns>
 protected override double PrimitiveGetY(IChartItem item)
 {
     return(this.GetAxis(item, false));
 }
コード例 #10
0
ファイル: AxisAbs.cs プロジェクト: windygu/UtilZ.DotnetEx
 /// <summary>
 /// 获取指定项在Y轴的坐标值
 /// </summary>
 /// <param name="item">目标项</param>
 /// <returns>指定项在Y轴的坐标值</returns>
 protected abstract double PrimitiveGetY(IChartItem item);