mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-23 17:30:10 +00:00
增加Symbol的EmptyTriangle和EmptyDiamond的支持
This commit is contained in:
@@ -71,17 +71,16 @@ namespace XCharts.Runtime
|
|||||||
case SymbolType.EmptyTriangle:
|
case SymbolType.EmptyTriangle:
|
||||||
if (gap > 0)
|
if (gap > 0)
|
||||||
{
|
{
|
||||||
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f + gap * 2f, backgroundColor);
|
UGL.DrawEmptyTriangle(vh, pos, symbolSize * 1.4f + gap * 2, gap * 2, backgroundColor);
|
||||||
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f, color, toColor);
|
}
|
||||||
|
if (type == SymbolType.EmptyTriangle)
|
||||||
|
{
|
||||||
|
UGL.DrawEmptyTriangle(vh, pos, symbolSize * 1.4f, tickness * 2f, color, emptyColor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f, color, toColor);
|
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f, color, toColor);
|
||||||
}
|
}
|
||||||
if (type == SymbolType.EmptyTriangle)
|
|
||||||
{
|
|
||||||
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f - tickness * 2, backgroundColor);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SymbolType.Diamond:
|
case SymbolType.Diamond:
|
||||||
case SymbolType.EmptyDiamond:
|
case SymbolType.EmptyDiamond:
|
||||||
@@ -89,17 +88,16 @@ namespace XCharts.Runtime
|
|||||||
var yRadius = symbolSize * 1.5f;
|
var yRadius = symbolSize * 1.5f;
|
||||||
if (gap > 0)
|
if (gap > 0)
|
||||||
{
|
{
|
||||||
UGL.DrawDiamond(vh, pos, xRadius + gap, yRadius + gap, backgroundColor, backgroundColor);
|
UGL.DrawEmptyDiamond(vh, pos, xRadius + gap, yRadius + gap, gap, backgroundColor);
|
||||||
UGL.DrawDiamond(vh, pos, xRadius, yRadius, color, toColor);
|
}
|
||||||
|
if (type == SymbolType.EmptyDiamond)
|
||||||
|
{
|
||||||
|
UGL.DrawEmptyDiamond(vh, pos, xRadius, yRadius, tickness, color, emptyColor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UGL.DrawDiamond(vh, pos, xRadius, yRadius, color, toColor);
|
UGL.DrawDiamond(vh, pos, xRadius, yRadius, color, toColor);
|
||||||
}
|
}
|
||||||
if (type == SymbolType.EmptyDiamond)
|
|
||||||
{
|
|
||||||
UGL.DrawDiamond(vh, pos, xRadius - tickness, (symbolSize - tickness) * 1.5f, backgroundColor, backgroundColor);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case SymbolType.Arrow:
|
case SymbolType.Arrow:
|
||||||
case SymbolType.EmptyArrow:
|
case SymbolType.EmptyArrow:
|
||||||
|
|||||||
@@ -456,6 +456,37 @@ namespace XUGL
|
|||||||
DrawTriangle(vh, p3, p4, p2, color, color, toColor);
|
DrawTriangle(vh, p3, p4, p2, color, color, toColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DrawEmptyDiamond(VertexHelper vh, Vector3 center, float xRadius, float yRadius, float tickness, Color32 color)
|
||||||
|
{
|
||||||
|
DrawEmptyDiamond(vh, center, xRadius, yRadius, tickness, color, s_ClearColor32);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DrawEmptyDiamond(VertexHelper vh, Vector3 center, float xRadius, float yRadius, float tickness, Color32 color, Color32 emptyColor)
|
||||||
|
{
|
||||||
|
var p1 = new Vector2(center.x - xRadius, center.y);
|
||||||
|
var p2 = new Vector2(center.x, center.y + yRadius);
|
||||||
|
var p3 = new Vector2(center.x + xRadius, center.y);
|
||||||
|
var p4 = new Vector2(center.x, center.y - yRadius);
|
||||||
|
|
||||||
|
var xRadius1 = xRadius - tickness;
|
||||||
|
var yRadius1 = yRadius - tickness * 1.5f;
|
||||||
|
var ip1 = new Vector2(center.x - xRadius1, center.y);
|
||||||
|
var ip2 = new Vector2(center.x, center.y + yRadius1);
|
||||||
|
var ip3 = new Vector2(center.x + xRadius1, center.y);
|
||||||
|
var ip4 = new Vector2(center.x, center.y - yRadius1);
|
||||||
|
|
||||||
|
if (!UGLHelper.IsClearColor(emptyColor))
|
||||||
|
{
|
||||||
|
DrawQuadrilateral(vh, ip1, ip2, ip3, ip4, emptyColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddVertToVertexHelper(vh, p1, ip1, color, false);
|
||||||
|
AddVertToVertexHelper(vh, p2, ip2, color);
|
||||||
|
AddVertToVertexHelper(vh, p3, ip3, color);
|
||||||
|
AddVertToVertexHelper(vh, p4, ip4, color);
|
||||||
|
AddVertToVertexHelper(vh, p1, ip1, color);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Draw a square. 画正方形
|
/// Draw a square. 画正方形
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -1229,6 +1260,38 @@ namespace XUGL
|
|||||||
vh.AddTriangle(startIndex, startIndex + 1, startIndex + 2);
|
vh.AddTriangle(startIndex, startIndex + 1, startIndex + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DrawEmptyTriangle(VertexHelper vh, Vector3 pos, float size, float tickness, Color32 color)
|
||||||
|
{
|
||||||
|
DrawEmptyTriangle(vh, pos, size, tickness, color, s_ClearColor32);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DrawEmptyTriangle(VertexHelper vh, Vector3 pos, float size, float tickness, Color32 color, Color32 backgroundColor)
|
||||||
|
{
|
||||||
|
var cos30 = Mathf.Cos(30 * Mathf.PI / 180);
|
||||||
|
var sin30 = Mathf.Sin(30 * Mathf.PI / 180);
|
||||||
|
var x = size * cos30;
|
||||||
|
var y = size * sin30;
|
||||||
|
var outsideLeft = new Vector2(pos.x - x, pos.y - y);
|
||||||
|
var outsideTop = new Vector2(pos.x, pos.y + size);
|
||||||
|
var outsideRight = new Vector2(pos.x + x, pos.y - y);
|
||||||
|
|
||||||
|
var size2 = size - tickness;
|
||||||
|
var x1 = size2 * cos30;
|
||||||
|
var y1 = size2 * sin30;
|
||||||
|
var insideLeft = new Vector2(pos.x - x1, pos.y - y1);
|
||||||
|
var insideTop = new Vector2(pos.x, pos.y + size2);
|
||||||
|
var insideRight = new Vector2(pos.x + x1, pos.y - y1);
|
||||||
|
|
||||||
|
if (!UGLHelper.IsClearColor(backgroundColor))
|
||||||
|
{
|
||||||
|
DrawTriangle(vh, insideLeft, insideTop, insideRight, backgroundColor, backgroundColor, backgroundColor);
|
||||||
|
}
|
||||||
|
AddVertToVertexHelper(vh, outsideLeft, insideLeft, color, false);
|
||||||
|
AddVertToVertexHelper(vh, outsideTop, insideTop, color);
|
||||||
|
AddVertToVertexHelper(vh, outsideRight, insideRight, color);
|
||||||
|
AddVertToVertexHelper(vh, outsideLeft, insideLeft, color);
|
||||||
|
}
|
||||||
|
|
||||||
public static void DrawCricle(VertexHelper vh, Vector3 center, float radius, Color32 color,
|
public static void DrawCricle(VertexHelper vh, Vector3 center, float radius, Color32 color,
|
||||||
float smoothness = 2f)
|
float smoothness = 2f)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user