mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-28 12:08:46 +00:00
修复Axis的inverse没能正确反转的问题
This commit is contained in:
@@ -415,6 +415,7 @@ namespace XCharts.Runtime
|
||||
public double rawMax;
|
||||
public double min;
|
||||
public double max;
|
||||
public bool isInverse;
|
||||
}
|
||||
private Dictionary<int, AxisIndexValueInfo> m_XAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>();
|
||||
private Dictionary<int, AxisIndexValueInfo> m_YAxisIndexInfos = new Dictionary<int, AxisIndexValueInfo>();
|
||||
@@ -688,7 +689,7 @@ namespace XCharts.Runtime
|
||||
context.height = chartHeight - runtimeTop - runtimeBottom;
|
||||
}
|
||||
|
||||
internal void SetXAxisIndexValueInfo(int xAxisIndex, ref double min, ref double max)
|
||||
internal void SetXAxisIndexValueInfo(int xAxisIndex, ref double min, ref double max, bool isInverse = false)
|
||||
{
|
||||
AxisIndexValueInfo info;
|
||||
if (!m_XAxisIndexInfos.TryGetValue(xAxisIndex, out info))
|
||||
@@ -698,13 +699,14 @@ namespace XCharts.Runtime
|
||||
}
|
||||
info.rawMin = min;
|
||||
info.rawMax = max;
|
||||
info.isInverse = isInverse;
|
||||
info.min = min + (max - min) * start / 100;
|
||||
info.max = min + (max - min) * end / 100;
|
||||
min = info.min;
|
||||
max = info.max;
|
||||
}
|
||||
|
||||
internal void SetYAxisIndexValueInfo(int yAxisIndex, ref double min, ref double max)
|
||||
internal void SetYAxisIndexValueInfo(int yAxisIndex, ref double min, ref double max, bool isInverse = false)
|
||||
{
|
||||
AxisIndexValueInfo info;
|
||||
if (!m_YAxisIndexInfos.TryGetValue(yAxisIndex, out info))
|
||||
@@ -714,6 +716,7 @@ namespace XCharts.Runtime
|
||||
}
|
||||
info.rawMin = min;
|
||||
info.rawMax = max;
|
||||
info.isInverse = isInverse;
|
||||
info.min = min + (max - min) * start / 100;
|
||||
info.max = min + (max - min) * end / 100;
|
||||
min = info.min;
|
||||
@@ -738,6 +741,14 @@ namespace XCharts.Runtime
|
||||
var range = info.rawMax - info.rawMin;
|
||||
min = info.rawMin + range * m_Start / 100;
|
||||
max = info.rawMin + range * m_End / 100;
|
||||
if (info.isInverse)
|
||||
{
|
||||
// Internal values are negated; convert back to original for data comparison
|
||||
var originalMin = -max;
|
||||
var originalMax = -min;
|
||||
min = originalMin;
|
||||
max = originalMax;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -753,6 +764,14 @@ namespace XCharts.Runtime
|
||||
var range = info.rawMax - info.rawMin;
|
||||
min = info.rawMin + range * m_Start / 100;
|
||||
max = info.rawMin + range * m_End / 100;
|
||||
if (info.isInverse)
|
||||
{
|
||||
// Internal values are negated; convert back to original for data comparison
|
||||
var originalMin = -max;
|
||||
var originalMax = -min;
|
||||
min = originalMin;
|
||||
max = originalMax;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -636,7 +636,7 @@ namespace XCharts.Runtime
|
||||
float pX;
|
||||
if (useXValueForShadow && i < showData.Count && showData[i].data.Count > 0)
|
||||
{
|
||||
var xVal = showData[i].data[0];
|
||||
var xVal = (xAxis != null && xAxis.inverse) ? -showData[i].data[0] : showData[i].data[0];
|
||||
pX = dataZoom.context.x + (float)((xVal - xMinValue) / (xMaxValue - xMinValue)) * dataZoom.context.width;
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user