mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-18 06:20:15 +00:00
优化代码
This commit is contained in:
@@ -244,7 +244,8 @@ namespace xcharts
|
||||
float scaleWid = coordinateWid / (xAxis.splitNumber - 1);
|
||||
if (xAxis.type == AxisType.value)
|
||||
{
|
||||
return new Vector3(zeroX + (i + 1 - 0.5f) * scaleWid, zeroY - coordinate.scaleLen - 10, 0);
|
||||
return new Vector3(zeroX + (i + 1 - 0.5f) * scaleWid,
|
||||
zeroY - coordinate.scaleLen - 10, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -254,7 +255,8 @@ namespace xcharts
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Vector3(zeroX + (i + 1 - 0.5f) * scaleWid, zeroY - coordinate.scaleLen - 5, 0);
|
||||
return new Vector3(zeroX + (i + 1 - 0.5f) * scaleWid,
|
||||
zeroY - coordinate.scaleLen - 5, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -389,7 +391,7 @@ namespace xcharts
|
||||
float pX = zeroX - coordinate.scaleLen;
|
||||
float pY = zeroY + i * coordinateHig / (yAxis.splitNumber - 1);
|
||||
ChartUtils.DrawLine(vh, new Vector3(pX, pY), new Vector3(zeroX, pY), coordinate.tickness,
|
||||
Color.white);
|
||||
themeInfo.axisLineColor);
|
||||
if (yAxis.showSplitLine)
|
||||
{
|
||||
DrawSplitLine(vh, true,yAxis.splitLineType, new Vector3(zeroX, pY),
|
||||
@@ -401,7 +403,7 @@ namespace xcharts
|
||||
float pX = zeroX + i * coordinateWid / (xAxis.splitNumber - 1);
|
||||
float pY = zeroY - coordinate.scaleLen - 2;
|
||||
ChartUtils.DrawLine(vh, new Vector3(pX, zeroY), new Vector3(pX, pY), coordinate.tickness,
|
||||
Color.white);
|
||||
themeInfo.axisLineColor);
|
||||
if (xAxis.showSplitLine)
|
||||
{
|
||||
DrawSplitLine(vh, false,xAxis.splitLineType, new Vector3(pX, zeroY),
|
||||
@@ -410,12 +412,15 @@ namespace xcharts
|
||||
}
|
||||
//draw x,y axis
|
||||
ChartUtils.DrawLine(vh, new Vector3(zeroX, zeroY - coordinate.scaleLen),
|
||||
new Vector3(zeroX, zeroY + coordinateHig + 2), coordinate.tickness, themeInfo.axisLineColor);
|
||||
new Vector3(zeroX, zeroY + coordinateHig + 2), coordinate.tickness,
|
||||
themeInfo.axisLineColor);
|
||||
ChartUtils.DrawLine(vh, new Vector3(zeroX - coordinate.scaleLen, zeroY),
|
||||
new Vector3(zeroX + coordinateWid + 2, zeroY), coordinate.tickness, themeInfo.axisLineColor);
|
||||
new Vector3(zeroX + coordinateWid + 2, zeroY), coordinate.tickness,
|
||||
themeInfo.axisLineColor);
|
||||
}
|
||||
|
||||
private void DrawSplitLine(VertexHelper vh,bool isYAxis,SplitLineType type,Vector3 startPos,Vector3 endPos)
|
||||
private void DrawSplitLine(VertexHelper vh,bool isYAxis,SplitLineType type,Vector3 startPos,
|
||||
Vector3 endPos)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
|
||||
@@ -67,10 +67,12 @@ namespace xcharts
|
||||
public float top;
|
||||
public float bottom;
|
||||
public List<LegendData> dataList = new List<LegendData>();
|
||||
public int checkDataListCount { get; set; }
|
||||
|
||||
public bool IsShowSeries(int seriesIndex)
|
||||
{
|
||||
if (seriesIndex < 0 || seriesIndex >= dataList.Count) seriesIndex = 0;
|
||||
if (seriesIndex >= dataList.Count) return false;
|
||||
return dataList[seriesIndex].show;
|
||||
}
|
||||
}
|
||||
@@ -236,7 +238,8 @@ namespace xcharts
|
||||
break;
|
||||
case Align.right:
|
||||
anchor = TextAnchor.MiddleRight;
|
||||
titlePosition = new Vector3(chartWid - title.right - titleWid, chartHig - title.top, 0);
|
||||
titlePosition = new Vector3(chartWid - title.right - titleWid,
|
||||
chartHig - title.top, 0);
|
||||
break;
|
||||
case Align.center:
|
||||
anchor = TextAnchor.MiddleCenter;
|
||||
@@ -265,7 +268,7 @@ namespace xcharts
|
||||
themeInfo.textColor, Vector2.zero,Vector2.zero, Vector2.zero,
|
||||
new Vector2(legend.dataWid, legend.dataHig));
|
||||
legend.dataList[i].button = btn;
|
||||
Color bcolor = data.show ? themeInfo.GetColor(i) : Color.grey;
|
||||
Color bcolor = data.show ? themeInfo.GetColor(i) : themeInfo.unableColor;
|
||||
btn.gameObject.SetActive(legend.show);
|
||||
btn.transform.localPosition = GetLegendPosition(i);
|
||||
btn.GetComponent<Image>().color = bcolor;
|
||||
@@ -273,7 +276,7 @@ namespace xcharts
|
||||
btn.onClick.AddListener(delegate ()
|
||||
{
|
||||
data.show = !data.show;
|
||||
btn.GetComponent<Image>().color = data.show ? themeInfo.GetColor(i) : Color.grey;
|
||||
btn.GetComponent<Image>().color = data.show ? themeInfo.GetColor(i) : themeInfo.unableColor;
|
||||
OnYMaxValueChanged();
|
||||
OnLegendButtonClicked();
|
||||
RefreshChart();
|
||||
@@ -306,10 +309,13 @@ namespace xcharts
|
||||
}
|
||||
else if (startY <= 0)
|
||||
{
|
||||
float offset = (chartHig - (legendCount * legend.dataHig - (legendCount - 1) * legend.dataSpace)) / 2;
|
||||
float legendHig = legendCount * legend.dataHig - (legendCount - 1) * legend.dataSpace;
|
||||
float offset = (chartHig - legendHig) / 2;
|
||||
startY = chartHig - offset - legend.dataHig;
|
||||
}
|
||||
float posX = legend.location == Location.left ? legend.left : chartWid - legend.right - legend.dataWid;
|
||||
float posX = legend.location == Location.left ?
|
||||
legend.left :
|
||||
chartWid - legend.right - legend.dataWid;
|
||||
return new Vector3(posX, startY - i * (legend.dataHig + legend.dataSpace), 0);
|
||||
default: break;
|
||||
}
|
||||
@@ -353,6 +359,12 @@ namespace xcharts
|
||||
|
||||
private void CheckLegend()
|
||||
{
|
||||
if (checkLegend.checkDataListCount != legend.dataList.Count)
|
||||
{
|
||||
checkLegend.checkDataListCount = legend.dataList.Count;
|
||||
OnLegendDataListChanged();
|
||||
}
|
||||
|
||||
if (checkLegend.dataWid != legend.dataWid ||
|
||||
checkLegend.dataHig != legend.dataHig ||
|
||||
checkLegend.dataSpace != legend.dataSpace ||
|
||||
@@ -404,15 +416,22 @@ namespace xcharts
|
||||
for (int i = 0; i < legend.dataList.Count; i++)
|
||||
{
|
||||
Button btn = legend.dataList[i].button;
|
||||
btn.GetComponent<RectTransform>().sizeDelta = new Vector2(legend.dataWid, legend.dataHig);
|
||||
btn.GetComponent<RectTransform>().sizeDelta =
|
||||
new Vector2(legend.dataWid, legend.dataHig);
|
||||
Text txt = btn.GetComponentInChildren<Text>();
|
||||
txt.transform.GetComponent<RectTransform>().sizeDelta = new Vector2(legend.dataWid, legend.dataHig);
|
||||
txt.transform.GetComponent<RectTransform>().sizeDelta =
|
||||
new Vector2(legend.dataWid, legend.dataHig);
|
||||
txt.transform.localPosition = Vector3.zero;
|
||||
btn.transform.localPosition = GetLegendPosition(i);
|
||||
btn.gameObject.SetActive(legend.show);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void OnLegendDataListChanged()
|
||||
{
|
||||
InitLegend();
|
||||
}
|
||||
|
||||
protected virtual void OnYMaxValueChanged()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ namespace xcharts
|
||||
public Color contrastColor;
|
||||
public Color textColor;
|
||||
public Color subTextColor;
|
||||
public Color unableColor;
|
||||
|
||||
public Color axisLineColor;
|
||||
public Color axisSplitLineColor;
|
||||
@@ -40,6 +41,7 @@ namespace xcharts
|
||||
font = theme.font;
|
||||
backgroundColor = theme.backgroundColor;
|
||||
contrastColor = theme.contrastColor;
|
||||
unableColor = theme.unableColor;
|
||||
textColor = theme.textColor;
|
||||
subTextColor = theme.subTextColor;
|
||||
axisLineColor = theme.axisLineColor;
|
||||
@@ -60,6 +62,7 @@ namespace xcharts
|
||||
font = Resources.GetBuiltinResource<Font>("Arial.ttf"),
|
||||
backgroundColor = new Color32(255, 255, 255, 255),
|
||||
contrastColor = GetColor("#514D4D"),
|
||||
unableColor = GetColor("#cccccc"),
|
||||
textColor = GetColor("#514D4D"),
|
||||
subTextColor = GetColor("#514D4D"),
|
||||
axisLineColor = GetColor("#514D4D"),
|
||||
@@ -91,6 +94,7 @@ namespace xcharts
|
||||
font = Resources.GetBuiltinResource<Font>("Arial.ttf"),
|
||||
backgroundColor = new Color32(255, 255, 255, 255),
|
||||
contrastColor = GetColor("#514D4D"),
|
||||
unableColor = GetColor("#cccccc"),
|
||||
textColor = GetColor("#514D4D"),
|
||||
subTextColor = GetColor("#514D4D"),
|
||||
axisLineColor = GetColor("#514D4D"),
|
||||
@@ -98,14 +102,14 @@ namespace xcharts
|
||||
colorPalette = new Color[]
|
||||
{
|
||||
new Color32(55, 162, 218, 255),
|
||||
new Color32(50, 197, 233, 255),
|
||||
new Color32(103, 224, 227, 255),
|
||||
new Color32(159, 230, 184, 255),
|
||||
new Color32(255, 219, 92, 255),
|
||||
new Color32(255, 159, 127, 255),
|
||||
new Color32(50, 197, 233, 255),
|
||||
new Color32(251, 114, 147, 255),
|
||||
new Color32(103, 224, 227, 255),
|
||||
new Color32(224, 98, 174, 255),
|
||||
new Color32(159, 230, 184, 255),
|
||||
new Color32(230, 144, 209, 255),
|
||||
new Color32(255, 219, 92, 255),
|
||||
new Color32(230, 188, 243, 255),
|
||||
new Color32(157, 150, 245, 255),
|
||||
new Color32(131, 120, 234, 255),
|
||||
@@ -122,6 +126,7 @@ namespace xcharts
|
||||
return new ThemeInfo()
|
||||
{
|
||||
font = Resources.GetBuiltinResource<Font>("Arial.ttf"),
|
||||
unableColor = GetColor("#cccccc"),
|
||||
backgroundColor = new Color32(34, 34, 34, 255),
|
||||
contrastColor = GetColor("#eee"),
|
||||
textColor = GetColor("#eee"),
|
||||
|
||||
@@ -7,8 +7,9 @@ namespace xcharts
|
||||
public static class ChartUtils
|
||||
{
|
||||
private static float CRICLE_SMOOTHNESS = 1f;
|
||||
public static Text AddTextObject(string name, Transform parent, Font font, Color color,TextAnchor anchor,
|
||||
Vector2 anchorMin, Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta, int fontSize = 14)
|
||||
public static Text AddTextObject(string name, Transform parent, Font font, Color color,
|
||||
TextAnchor anchor,Vector2 anchorMin, Vector2 anchorMax, Vector2 pivot, Vector2 sizeDelta,
|
||||
int fontSize = 14)
|
||||
{
|
||||
GameObject txtObj;
|
||||
if (parent.Find(name))
|
||||
@@ -73,6 +74,7 @@ namespace xcharts
|
||||
{
|
||||
rect = btnObj.AddComponent<RectTransform>();
|
||||
}
|
||||
btnObj.GetComponentInChildren<Text>().color = color;
|
||||
rect.anchorMax = anchorMax;
|
||||
rect.anchorMin = anchorMin;
|
||||
rect.pivot = pivot;
|
||||
@@ -167,8 +169,8 @@ namespace xcharts
|
||||
DrawSector(vh, p, radius, color, 0, 360, segments);
|
||||
}
|
||||
|
||||
public static void DrawCicleNotFill(VertexHelper vh, Vector3 p, float radius, float tickness, Color color,
|
||||
int segments = 0)
|
||||
public static void DrawCicleNotFill(VertexHelper vh, Vector3 p, float radius, float tickness,
|
||||
Color color, int segments = 0)
|
||||
{
|
||||
if (segments <= 0)
|
||||
{
|
||||
@@ -206,7 +208,8 @@ namespace xcharts
|
||||
for (int i = 0; i <= segments; i++)
|
||||
{
|
||||
float currAngle = startAngle + i * angle;
|
||||
p3 = new Vector3(p.x + radius * Mathf.Sin(currAngle), p.y + radius * Mathf.Cos(currAngle));
|
||||
p3 = new Vector3(p.x + radius * Mathf.Sin(currAngle),
|
||||
p.y + radius * Mathf.Cos(currAngle));
|
||||
DrawTriangle(vh, vertexs, p, p2, p3, color);
|
||||
p2 = p3;
|
||||
}
|
||||
@@ -227,14 +230,17 @@ namespace xcharts
|
||||
Vector3 p1, p2, p3, p4;
|
||||
float startAngle = startDegree * Mathf.Deg2Rad;
|
||||
float angle = (toDegree - startDegree) * Mathf.Deg2Rad / segments;
|
||||
p1 = new Vector3(p.x + insideRadius * Mathf.Sin(startAngle), p.y + insideRadius * Mathf.Cos(startAngle));
|
||||
p2 = new Vector3(p.x + outsideRadius * Mathf.Sin(startAngle), p.y + outsideRadius * Mathf.Cos(startAngle));
|
||||
p1 = new Vector3(p.x + insideRadius * Mathf.Sin(startAngle),
|
||||
p.y + insideRadius * Mathf.Cos(startAngle));
|
||||
p2 = new Vector3(p.x + outsideRadius * Mathf.Sin(startAngle),
|
||||
p.y + outsideRadius * Mathf.Cos(startAngle));
|
||||
for (int i = 0; i <= segments; i++)
|
||||
{
|
||||
float currAngle = startAngle + i * angle;
|
||||
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
p4 = new Vector3(p.x + insideRadius * Mathf.Sin(currAngle), p.y + insideRadius * Mathf.Cos(currAngle));
|
||||
|
||||
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle),
|
||||
p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
p4 = new Vector3(p.x + insideRadius * Mathf.Sin(currAngle),
|
||||
p.y + insideRadius * Mathf.Cos(currAngle));
|
||||
DrawPolygon(vh, p1, p2, p3, p4, color);
|
||||
p1 = p4;
|
||||
p2 = p3;
|
||||
|
||||
@@ -97,10 +97,12 @@ namespace xcharts
|
||||
{
|
||||
SeriesData data = series.dataList[i];
|
||||
|
||||
Vector3 p = new Vector3(startX + i * scaleWid, zeroY + data.value * coordinateHig / max);
|
||||
Vector3 p = new Vector3(startX + i * scaleWid,
|
||||
zeroY + data.value * coordinateHig / max);
|
||||
if(theme == Theme.Dark)
|
||||
{
|
||||
ChartUtils.DrawCricle(vh, p, lineInfo.pointWid, color, (int)lineInfo.pointWid * 5);
|
||||
ChartUtils.DrawCricle(vh, p, lineInfo.pointWid, color,
|
||||
(int)lineInfo.pointWid * 5);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -210,7 +210,10 @@ namespace xcharts
|
||||
{
|
||||
toPoint = new Vector3(p.x + radius * Mathf.Sin(currAngle),
|
||||
p.y + radius * Mathf.Cos(currAngle));
|
||||
if (radarInfo.area) ChartUtils.DrawTriangle(vh, p, startPoint, toPoint, areaColor);
|
||||
if (radarInfo.area)
|
||||
{
|
||||
ChartUtils.DrawTriangle(vh, p, startPoint, toPoint, areaColor);
|
||||
}
|
||||
ChartUtils.DrawLine(vh, startPoint, toPoint, radarInfo.lineTickness, color);
|
||||
startPoint = toPoint;
|
||||
}
|
||||
@@ -245,8 +248,10 @@ namespace xcharts
|
||||
for (int j = 0; j <= indicatorNum; j++)
|
||||
{
|
||||
float currAngle = j * angle;
|
||||
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
p4 = new Vector3(p.x + insideRadius * Mathf.Sin(currAngle), p.y + insideRadius * Mathf.Cos(currAngle));
|
||||
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle),
|
||||
p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
p4 = new Vector3(p.x + insideRadius * Mathf.Sin(currAngle),
|
||||
p.y + insideRadius * Mathf.Cos(currAngle));
|
||||
|
||||
ChartUtils.DrawPolygon(vh, p1, p2, p3, p4, color);
|
||||
ChartUtils.DrawLine(vh, p2, p3, radarInfo.lineTickness, radarInfo.lineColor);
|
||||
@@ -258,7 +263,8 @@ namespace xcharts
|
||||
for (int j = 0; j <= indicatorNum; j++)
|
||||
{
|
||||
float currAngle = j * angle;
|
||||
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
p3 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle),
|
||||
p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
ChartUtils.DrawLine(vh, p, p3, radarInfo.lineTickness/2, radarInfo.lineColor);
|
||||
}
|
||||
}
|
||||
@@ -276,13 +282,15 @@ namespace xcharts
|
||||
Color color = radarInfo.backgroundColorList[i % radarInfo.backgroundColorList.Count];
|
||||
outsideRadius = insideRadius + block;
|
||||
ChartUtils.DrawDoughnut(vh, p, insideRadius, outsideRadius, 0, 360, color);
|
||||
ChartUtils.DrawCicleNotFill(vh, p, outsideRadius, radarInfo.lineTickness, radarInfo.lineColor);
|
||||
ChartUtils.DrawCicleNotFill(vh, p, outsideRadius, radarInfo.lineTickness,
|
||||
radarInfo.lineColor);
|
||||
insideRadius = outsideRadius;
|
||||
}
|
||||
for (int j = 0; j <= indicatorNum; j++)
|
||||
{
|
||||
float currAngle = j * angle;
|
||||
p1 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle), p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
p1 = new Vector3(p.x + outsideRadius * Mathf.Sin(currAngle),
|
||||
p.y + outsideRadius * Mathf.Cos(currAngle));
|
||||
ChartUtils.DrawLine(vh, p, p1, radarInfo.lineTickness / 2, radarInfo.lineColor);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user