internal override void UpdateAxisLabelText(Axis axis)
 {
     base.UpdateAxisLabelText(axis);
     if (axis.IsTime() || axis.IsValue())
     {
         for (int i = 0; i < axis.context.labelObjectList.Count; i++)
         {
             var label = axis.context.labelObjectList[i];
             if (label != null)
             {
                 var pos = GetLabelPosition(0, i);
                 label.SetPosition(pos);
                 CheckValueLabelActive(component, i, label, pos);
             }
         }
     }
 }
예제 #2
0
        /// <summary>
        /// 获得一个类目数据在坐标系中代表的宽度
        /// </summary>
        /// <param name="coordinateWidth"></param>
        /// <param name="dataZoom"></param>
        /// <returns></returns>
        public static float GetDataWidth(Axis axis, float coordinateWidth, int dataCount, DataZoom dataZoom)
        {
            if (dataCount < 1)
            {
                dataCount = 1;
            }
            if (axis.IsValue())
            {
                return(dataCount > 1 ? coordinateWidth / (dataCount - 1) : coordinateWidth);
            }
            var categoryCount = axis.GetDataCount(dataZoom);
            int segment       = (axis.boundaryGap ? categoryCount : categoryCount - 1);

            segment = segment <= 0 ? dataCount : segment;
            if (segment <= 0)
            {
                segment = 1;
            }

            return(coordinateWidth / segment);
        }
예제 #3
0
        /// <summary>
        /// 获得分割段宽度
        /// </summary>
        /// <param name="coordinateWidth"></param>
        /// <param name="dataZoom"></param>
        /// <returns></returns>
        public static float GetScaleWidth(Axis axis, float coordinateWidth, int index, DataZoom dataZoom = null)
        {
            if (index < 0)
            {
                return(0);
            }

            int num      = GetScaleNumber(axis, coordinateWidth, dataZoom);
            int splitNum = GetSplitNumber(axis, coordinateWidth, dataZoom);

            if (num <= 0)
            {
                num = 1;
            }

            if (axis.IsTime() || axis.IsValue())
            {
                var value     = axis.GetLabelValue(index);
                var lastValue = axis.GetLabelValue(index - 1);
                return(axis.context.minMaxRange == 0 ?
                       0 :
                       (float)(coordinateWidth * (value - lastValue) / axis.context.minMaxRange));
            }
            else
            {
                var data = axis.GetDataList(dataZoom);
                if (axis.IsCategory() && data.Count > 0)
                {
                    var count = axis.boundaryGap ? data.Count : data.Count - 1;
                    int tick  = count / splitNum;
                    if (count <= 0)
                    {
                        return(0);
                    }

                    var each = coordinateWidth / count;
                    if (axis.insertDataToHead)
                    {
                        var max = axis.boundaryGap ? splitNum : splitNum - 1;
                        if (index == 1)
                        {
                            if (axis.axisTick.alignWithLabel)
                            {
                                return(each * tick);
                            }
                            else
                            {
                                return(coordinateWidth - each * tick * max);
                            }
                        }
                        else
                        {
                            if (count < splitNum)
                            {
                                return(each);
                            }
                            else
                            {
                                return(each * (count / splitNum));
                            }
                        }
                    }
                    else
                    {
                        var max = axis.boundaryGap ? num - 1 : num;
                        if (index >= max)
                        {
                            if (axis.axisTick.alignWithLabel)
                            {
                                return(each * tick);
                            }
                            else
                            {
                                return(coordinateWidth - each * tick * (index - 1));
                            }
                        }
                        else
                        {
                            if (count < splitNum)
                            {
                                return(each);
                            }
                            else
                            {
                                return(each * (count / splitNum));
                            }
                        }
                    }
                }
                else
                {
                    if (splitNum <= 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return(coordinateWidth / splitNum);
                    }
                }
            }
        }