mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-28 12:08:46 +00:00
修复PieChart在设置Space参数后动画绘制异常的问题
This commit is contained in:
@@ -655,17 +655,24 @@ namespace XCharts
|
|||||||
realCenter += borderDiff * middleDire;
|
realCenter += borderDiff * middleDire;
|
||||||
borderAngle = 2 * Mathf.Asin(borderWidth / (2 * radius));
|
borderAngle = 2 * Mathf.Asin(borderWidth / (2 * radius));
|
||||||
realStartAngle = realStartAngle + borderAngle;
|
realStartAngle = realStartAngle + borderAngle;
|
||||||
|
realToAngle = realToAngle - borderAngle;
|
||||||
|
if (realToAngle < realStartAngle)
|
||||||
|
{
|
||||||
|
realToAngle = realStartAngle;
|
||||||
|
p2 = GetPos(p, radius, realStartAngle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
var borderX1 = GetPos(p, radius, realStartAngle);
|
var borderX1 = GetPos(p, radius, realStartAngle);
|
||||||
DrawPolygon(vh, realCenter, spaceCenter, p2, borderX1, borderColor);
|
DrawPolygon(vh, realCenter, spaceCenter, p2, borderX1, borderColor);
|
||||||
p2 = borderX1;
|
p2 = borderX1;
|
||||||
|
|
||||||
realToAngle = realToAngle - borderAngle;
|
|
||||||
if (realToAngle < realStartAngle) realToAngle = realStartAngle;
|
|
||||||
var borderX2 = GetPos(p, radius, realToAngle);
|
var borderX2 = GetPos(p, radius, realToAngle);
|
||||||
var pEnd = GetPos(p, radius, toAngle - spaceAngle);
|
var pEnd = GetPos(p, radius, toAngle - spaceAngle);
|
||||||
DrawPolygon(vh, realCenter, borderX2, pEnd, spaceCenter, borderColor);
|
DrawPolygon(vh, realCenter, borderX2, pEnd, spaceCenter, borderColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
float segmentAngle = (realToAngle - realStartAngle) / segments;
|
float segmentAngle = (realToAngle - realStartAngle) / segments;
|
||||||
for (int i = 0; i <= segments; i++)
|
for (int i = 0; i <= segments; i++)
|
||||||
{
|
{
|
||||||
@@ -675,6 +682,8 @@ namespace XCharts
|
|||||||
p2 = p3;
|
p2 = p3;
|
||||||
}
|
}
|
||||||
if (needBorder || needSpace)
|
if (needBorder || needSpace)
|
||||||
|
{
|
||||||
|
if (realToAngle > realStartAngle)
|
||||||
{
|
{
|
||||||
var borderX2 = p + radius * GetDire(realToAngle);
|
var borderX2 = p + radius * GetDire(realToAngle);
|
||||||
DrawTriangle(vh, realCenter, p2, borderX2, toColor, color, color);
|
DrawTriangle(vh, realCenter, p2, borderX2, toColor, color, color);
|
||||||
@@ -687,6 +696,7 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false)
|
private static Vector3 GetPos(Vector3 center, float radius, float angle, bool isDegree = false)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user