3.0 - guage chart

This commit is contained in:
monitor1394
2022-02-19 17:35:22 +08:00
parent a19b796a02
commit ce5aeb2d98
41 changed files with 266 additions and 337 deletions

View File

@@ -5,7 +5,7 @@ namespace XCharts
{
[System.Serializable]
[SerieHandler(typeof(RingHandler), true)]
[SerieExtraComponent(typeof(LabelStyle), typeof(Emphasis))]
[SerieExtraComponent(typeof(LabelStyle), typeof(TitleStyle), typeof(Emphasis))]
public class Ring : Serie
{
public override bool useDataNameForColor { get { return true; } }
@@ -14,13 +14,17 @@ namespace XCharts
var serie = chart.AddSerie<Ring>(serieName);
serie.roundCap = true;
serie.radius = new float[] { 0.3f, 0.35f };
serie.titleStyle.show = false;
serie.titleStyle.textStyle.offset = new Vector2(0, 30);
serie.AddExtraComponent<LabelStyle>();
serie.label.show = true;
serie.label.position = LabelStyle.Position.Center;
serie.label.formatter = "{d:f0}%";
serie.label.textStyle.fontSize = 28;
serie.AddExtraComponent<TitleStyle>();
serie.titleStyle.show = false;
serie.titleStyle.textStyle.offset = new Vector2(0, 30);
var value = Random.Range(30, 90);
var max = 100;
chart.AddData(serie.index, value, max, "data1");

View File

@@ -247,12 +247,12 @@ namespace XCharts
case LabelStyle.Position.Bottom:
var px1 = Mathf.Sin(startAngle * Mathf.Deg2Rad) * centerRadius;
var py1 = Mathf.Cos(startAngle * Mathf.Deg2Rad) * centerRadius;
var xDiff = serie.clockwise ? -label.margin : label.margin;
var xDiff = serie.clockwise ? -label.distance : label.distance;
serieData.context.labelPosition = serie.context.center + new Vector3(px1 + xDiff, py1);
break;
case LabelStyle.Position.Top:
startAngle += serie.clockwise ? -label.margin : label.margin;
toAngle += serie.clockwise ? label.margin : -label.margin;
startAngle += serie.clockwise ? -label.distance : label.distance;
toAngle += serie.clockwise ? label.distance : -label.distance;
var px2 = Mathf.Sin(toAngle * Mathf.Deg2Rad) * centerRadius;
var py2 = Mathf.Cos(toAngle * Mathf.Deg2Rad) * centerRadius;
serieData.context.labelPosition = serie.context.center + new Vector3(px2, py2);