修复PieChart在设置Space参数后动画绘制异常的问题

This commit is contained in:
monitor1394
2020-04-16 09:36:03 +08:00
parent 4861529196
commit 4d3e7f1605

View File

@@ -655,15 +655,22 @@ 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;
var borderX1 = GetPos(p, radius, realStartAngle);
DrawPolygon(vh, realCenter, spaceCenter, p2, borderX1, borderColor);
p2 = borderX1;
realToAngle = realToAngle - borderAngle; realToAngle = realToAngle - borderAngle;
if (realToAngle < realStartAngle) realToAngle = realStartAngle; if (realToAngle < realStartAngle)
var borderX2 = GetPos(p, radius, realToAngle); {
var pEnd = GetPos(p, radius, toAngle - spaceAngle); realToAngle = realStartAngle;
DrawPolygon(vh, realCenter, borderX2, pEnd, spaceCenter, borderColor); p2 = GetPos(p, radius, realStartAngle);
}
else
{
var borderX1 = GetPos(p, radius, realStartAngle);
DrawPolygon(vh, realCenter, spaceCenter, p2, borderX1, borderColor);
p2 = borderX1;
var borderX2 = GetPos(p, radius, realToAngle);
var pEnd = GetPos(p, radius, toAngle - spaceAngle);
DrawPolygon(vh, realCenter, borderX2, pEnd, spaceCenter, borderColor);
}
} }
} }
float segmentAngle = (realToAngle - realStartAngle) / segments; float segmentAngle = (realToAngle - realStartAngle) / segments;
@@ -676,14 +683,17 @@ namespace XCharts
} }
if (needBorder || needSpace) if (needBorder || needSpace)
{ {
var borderX2 = p + radius * GetDire(realToAngle); if (realToAngle > realStartAngle)
DrawTriangle(vh, realCenter, p2, borderX2, toColor, color, color);
if (needBorder)
{ {
var realStartDegree = (realStartAngle - borderAngle) * Mathf.Rad2Deg; var borderX2 = p + radius * GetDire(realToAngle);
var realToDegree = (realToAngle + borderAngle) * Mathf.Rad2Deg; DrawTriangle(vh, realCenter, p2, borderX2, toColor, color, color);
DrawDoughnut(vh, p, radius, radius + borderWidth, borderColor, Color.clear, realStartDegree, if (needBorder)
realToDegree, smoothness); {
var realStartDegree = (realStartAngle - borderAngle) * Mathf.Rad2Deg;
var realToDegree = (realToAngle + borderAngle) * Mathf.Rad2Deg;
DrawDoughnut(vh, p, radius, radius + borderWidth, borderColor, Color.clear, realStartDegree,
realToDegree, smoothness);
}
} }
} }
} }