From 09c32f171d52b71c308f0b1d6a2e81cf5fee5ba0 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Thu, 18 Mar 2021 19:25:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`BarChart`=E5=9C=A8=20`0`=20?= =?UTF-8?q?=E6=95=B0=E5=80=BC=E6=97=B6=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/XCharts/CHANGELOG.md | 1 + .../Internal/CoordinateChart_DrawBar.cs | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index 5842f1f0..240d02bb 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -32,6 +32,7 @@ ## Latest +* (2021.03.18) 修复`BarChart`在 `0` 数值时显示异常的问题 * (2021.03.14) 修复`Tooltip`的指示器在某些情况下指示位置不准的问题 * (2021.03.13) 优化`MultiComponentMode`开启后的编辑体验和组件刷新 #128 * (2021.03.10) 增加`CandlestickChart`K线图 #124 diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs index ce16369f..937980df 100644 --- a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs +++ b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs @@ -63,7 +63,8 @@ namespace XCharts float value = showData[i].GetCurrData(1, dataChangeDuration, xAxis.inverse, xMinValue, xMaxValue); float borderWidth = value == 0 ? 0 : itemStyle.runtimeBorderWidth; if (showData[i].IsDataChanged()) dataChanging = true; - float axisLineWidth = (value < 0 ? -1 : 1) * yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); + float axisLineWidth = value == 0 ? 0 + : ((value < 0 ? -1 : 1) * yAxis.axisLine.GetWidth(m_Theme.axis.lineWidth)); float pY = grid.runtimeY + i * categoryWidth; if (!yAxis.boundaryGap) pY -= categoryWidth / 2; @@ -98,15 +99,15 @@ namespace XCharts if (value < 0) { plt = new Vector3(pX - borderWidth, pY + space + barWidth - borderWidth); - prt = new Vector3(pX + currHig + borderWidth - axisLineWidth, pY + space + barWidth - borderWidth); - prb = new Vector3(pX + currHig + borderWidth - axisLineWidth, pY + space + borderWidth); + prt = new Vector3(pX + currHig + borderWidth, pY + space + barWidth - borderWidth); + prb = new Vector3(pX + currHig + borderWidth, pY + space + borderWidth); plb = new Vector3(pX - borderWidth, pY + space + borderWidth); } else { plt = new Vector3(pX + borderWidth, pY + space + barWidth - borderWidth); - prt = new Vector3(pX + currHig - borderWidth - axisLineWidth, pY + space + barWidth - borderWidth); - prb = new Vector3(pX + currHig - borderWidth - axisLineWidth, pY + space + borderWidth); + prt = new Vector3(pX + currHig - borderWidth , pY + space + barWidth - borderWidth); + prb = new Vector3(pX + currHig - borderWidth , pY + space + borderWidth); plb = new Vector3(pX + borderWidth, pY + space + borderWidth); } top = new Vector3(pX + currHig - borderWidth, pY + space + barWidth / 2); @@ -199,7 +200,8 @@ namespace XCharts float pX = grid.runtimeX + i * categoryWidth; float zeroY = grid.runtimeY + yAxis.runtimeZeroYOffset; if (!xAxis.boundaryGap) pX -= categoryWidth / 2; - float axisLineWidth = (value < 0 ? -1 : 1) * xAxis.axisLine.GetWidth(m_Theme.axis.lineWidth); + float axisLineWidth = value == 0 ? 0 : + ((value < 0 ? -1 : 1) * xAxis.axisLine.GetWidth(m_Theme.axis.lineWidth)); float pY = zeroY + axisLineWidth; if (isStack) { @@ -232,15 +234,15 @@ namespace XCharts if (value < 0) { plb = new Vector3(pX + space + borderWidth, pY - borderWidth); - plt = new Vector3(pX + space + borderWidth, pY + currHig + borderWidth - axisLineWidth); - prt = new Vector3(pX + space + barWidth - borderWidth, pY + currHig + borderWidth - axisLineWidth); + plt = new Vector3(pX + space + borderWidth, pY + currHig + borderWidth); + prt = new Vector3(pX + space + barWidth - borderWidth, pY + currHig + borderWidth); prb = new Vector3(pX + space + barWidth - borderWidth, pY - borderWidth); } else { plb = new Vector3(pX + space + borderWidth, pY + borderWidth); - plt = new Vector3(pX + space + borderWidth, pY + currHig - borderWidth - axisLineWidth); - prt = new Vector3(pX + space + barWidth - borderWidth, pY + currHig - borderWidth - axisLineWidth); + plt = new Vector3(pX + space + borderWidth, pY + currHig - borderWidth); + prt = new Vector3(pX + space + barWidth - borderWidth, pY + currHig - borderWidth); prb = new Vector3(pX + space + barWidth - borderWidth, pY + borderWidth); } top = new Vector3(pX + space + barWidth / 2, pY + currHig - borderWidth);