From bda6fc797861458ea082048d2533be42f8e3d5dd Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Fri, 6 Jan 2023 22:51:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`Pie`=E5=9C=A8=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E5=87=A0=E4=B8=AA=E6=95=B0=E6=8D=AE=E9=83=BD?= =?UTF-8?q?=E4=B8=BA0=E6=97=B6`Label`=E6=98=BE=E7=A4=BA=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98=20(#240)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation~/zh/changelog.md | 1 + Runtime/Component/Label/SerieLabelHelper.cs | 4 +++- Runtime/Serie/Pie/PieHandler.cs | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 64a2fe2b..0b9c633d 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -65,6 +65,7 @@ slug: /changelog ## master +* (2023.01.06) 修复`Pie`在最后的几个数据都为0时`Label`显示不正常的问题 (#240) * (2023.01.03) 删除`Serie`的`MarkColor`,增加`ItemStyle`的`MarkColor` * (2022.12.29) 增加`Editor`对`List`的`+`添加编辑功能 * (2022.12.29) 修复`UpdateXYData()`接口影响数据精度的问题 (#238) diff --git a/Runtime/Component/Label/SerieLabelHelper.cs b/Runtime/Component/Label/SerieLabelHelper.cs index 84b9b67e..5d9c5a65 100644 --- a/Runtime/Component/Label/SerieLabelHelper.cs +++ b/Runtime/Component/Label/SerieLabelHelper.cs @@ -217,7 +217,9 @@ namespace XCharts.Runtime { var currAngle = serieData.context.halfAngle; var offset = labelLine.lineLength2 + serieData.labelObject.GetTextWidth() / 2; - if ((currAngle - serie.context.startAngle) % 360 > 180) + var angle = (currAngle - serie.context.startAngle) % 360; + var isLeft = angle > 180 || (angle == 0 && serieData.context.startAngle > 0); + if (isLeft) return serieData.context.labelPosition + new Vector3(-offset, 0, 0); else return serieData.context.labelPosition + new Vector3(offset, 0, 0); diff --git a/Runtime/Serie/Pie/PieHandler.cs b/Runtime/Serie/Pie/PieHandler.cs index 96b8b017..654403c1 100644 --- a/Runtime/Serie/Pie/PieHandler.cs +++ b/Runtime/Serie/Pie/PieHandler.cs @@ -491,8 +491,9 @@ namespace XCharts.Runtime pos6 = pos0 + Vector3.left * lineCircleDiff; pos4 = pos6 + Vector3.left * r4; } - var pos5X = (currAngle - startAngle) % 360 > 180 ? - pos2.x - labelLine.lineLength2 : pos2.x + labelLine.lineLength2; + var diffAngle = (currAngle - startAngle) % 360; + var isLeft = diffAngle > 180 || (diffAngle == 0 && serieData.context.startAngle > 0); + var pos5X = isLeft?pos2.x - labelLine.lineLength2 : pos2.x + labelLine.lineLength2; var pos5 = new Vector3(pos5X, pos2.y); var angle = Vector3.Angle(pos1 - center, pos2 - pos1); if (angle > 15)