mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-22 17:00:08 +00:00
修复Axis的更新数据时效果不顺畅的问题
This commit is contained in:
@@ -140,8 +140,9 @@ namespace XCharts
|
||||
return;
|
||||
}
|
||||
|
||||
double tempMinValue = 0;
|
||||
double tempMaxValue = 0;
|
||||
double tempMinValue;
|
||||
double tempMaxValue;
|
||||
axis.context.needAnimation = Application.isPlaying && axis.animation.show;
|
||||
chart.GetSeriesMinMaxValue(axis, axisIndex, out tempMinValue, out tempMaxValue);
|
||||
|
||||
var dataZoom = chart.GetDataZoomOfAxis(axis);
|
||||
@@ -152,14 +153,15 @@ namespace XCharts
|
||||
else
|
||||
dataZoom.SetYAxisIndexValueInfo(axisIndex, ref tempMinValue, ref tempMaxValue);
|
||||
}
|
||||
if (tempMinValue != axis.context.minValue ||
|
||||
tempMaxValue != axis.context.maxValue ||
|
||||
|
||||
if (tempMinValue != axis.context.destMinValue ||
|
||||
tempMaxValue != axis.context.destMaxValue ||
|
||||
m_LastInterval != axis.interval ||
|
||||
m_LastSplitNumber != axis.splitNumber)
|
||||
{
|
||||
m_LastSplitNumber = axis.splitNumber;
|
||||
m_LastInterval = axis.interval;
|
||||
axis.UpdateMinMaxValue(tempMinValue, tempMaxValue);
|
||||
axis.UpdateMinMaxValue(tempMinValue, tempMaxValue, axis.context.needAnimation);
|
||||
axis.context.offset = 0;
|
||||
axis.context.lastCheckInverse = axis.inverse;
|
||||
UpdateAxisTickValueList(axis);
|
||||
@@ -183,6 +185,36 @@ namespace XCharts
|
||||
chart.RefreshChart();
|
||||
}
|
||||
}
|
||||
|
||||
if (axis.context.needAnimation && (axis.context.minValue != axis.context.destMinValue || axis.context.maxValue != axis.context.destMaxValue))
|
||||
{
|
||||
var duration = axis.animation.duration == 0
|
||||
? SeriesHelper.GetMinAnimationDuration(chart.series) / 1000f
|
||||
: axis.animation.duration / 1000f;
|
||||
var deltaTime = axis.animation.unscaledTime ? Time.unscaledDeltaTime : Time.deltaTime;
|
||||
var minDiff = axis.context.destMinValue - axis.context.lastMinValue;
|
||||
var maxDiff = axis.context.destMaxValue - axis.context.lastMaxValue;
|
||||
var minDelta = minDiff / duration * deltaTime;
|
||||
var maxDelta = maxDiff / duration * deltaTime;
|
||||
axis.context.minValue += minDelta;
|
||||
axis.context.maxValue += maxDelta;
|
||||
if ((minDiff > 0 && axis.context.minValue > axis.context.destMinValue)
|
||||
|| (minDiff < 0 && axis.context.minValue < axis.context.destMinValue))
|
||||
{
|
||||
axis.context.minValue = axis.context.destMinValue;
|
||||
axis.context.lastMinValue = axis.context.destMinValue;
|
||||
}
|
||||
if ((maxDiff > 0 && axis.context.maxValue > axis.context.destMaxValue)
|
||||
|| (maxDiff < 0 && axis.context.maxValue < axis.context.destMaxValue))
|
||||
{
|
||||
axis.context.maxValue = axis.context.destMaxValue;
|
||||
axis.context.lastMaxValue = axis.context.destMaxValue;
|
||||
}
|
||||
axis.context.minMaxRange = axis.context.maxValue - axis.context.minValue;
|
||||
UpdateAxisTickValueList(axis);
|
||||
UpdateAxisLabelText(axis);
|
||||
chart.RefreshChart();
|
||||
}
|
||||
}
|
||||
|
||||
internal virtual void UpdateAxisLabelText(Axis axis)
|
||||
@@ -376,8 +408,8 @@ namespace XCharts
|
||||
{
|
||||
var labelWidth = AxisHelper.GetScaleWidth(axis, axisLength, i + 1, dataZoom);
|
||||
var labelName = AxisHelper.GetLabelName(axis, axisLength, i,
|
||||
axis.context.minValue,
|
||||
axis.context.maxValue,
|
||||
axis.context.destMinValue,
|
||||
axis.context.destMaxValue,
|
||||
dataZoom, isPercentStack);
|
||||
|
||||
var label = ChartHelper.AddAxisLabelObject(splitNumber, i,
|
||||
@@ -631,7 +663,8 @@ namespace XCharts
|
||||
minorTickDistance = scaleWidth * axis.GetLogValue(1 + (count + 1) * logRange / minorTickSplitNumber);
|
||||
tickTotal = lastTickX + minorTickDistance;
|
||||
}
|
||||
}else if (lastTickX <= axis.context.zeroX || (i == minorStartIndex && pX > axis.context.zeroX))
|
||||
}
|
||||
else if (lastTickX <= axis.context.zeroX || (i == minorStartIndex && pX > axis.context.zeroX))
|
||||
{
|
||||
var tickTotal = pX - minorTickDistance;
|
||||
while (tickTotal > lastTickX)
|
||||
|
||||
Reference in New Issue
Block a user