增加SymbolEmptyTriangleEmptyDiamond的支持

This commit is contained in:
monitor1394
2023-08-09 08:39:44 +08:00
parent 5356e2304c
commit 2e2ad0a1f2
2 changed files with 73 additions and 12 deletions

View File

@@ -71,17 +71,16 @@ namespace XCharts.Runtime
case SymbolType.EmptyTriangle:
if (gap > 0)
{
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f + gap * 2f, backgroundColor);
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f, color, toColor);
UGL.DrawEmptyTriangle(vh, pos, symbolSize * 1.4f + gap * 2, gap * 2, backgroundColor);
}
if (type == SymbolType.EmptyTriangle)
{
UGL.DrawEmptyTriangle(vh, pos, symbolSize * 1.4f, tickness * 2f, color, emptyColor);
}
else
{
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f, color, toColor);
}
if (type == SymbolType.EmptyTriangle)
{
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f - tickness * 2, backgroundColor);
}
break;
case SymbolType.Diamond:
case SymbolType.EmptyDiamond:
@@ -89,17 +88,16 @@ namespace XCharts.Runtime
var yRadius = symbolSize * 1.5f;
if (gap > 0)
{
UGL.DrawDiamond(vh, pos, xRadius + gap, yRadius + gap, backgroundColor, backgroundColor);
UGL.DrawDiamond(vh, pos, xRadius, yRadius, color, toColor);
UGL.DrawEmptyDiamond(vh, pos, xRadius + gap, yRadius + gap, gap, backgroundColor);
}
if (type == SymbolType.EmptyDiamond)
{
UGL.DrawEmptyDiamond(vh, pos, xRadius, yRadius, tickness, color, emptyColor);
}
else
{
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;
case SymbolType.Arrow:
case SymbolType.EmptyArrow:

View File

@@ -456,6 +456,37 @@ namespace XUGL
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>
/// Draw a square. 画正方形
/// </summary>
@@ -1229,6 +1260,38 @@ namespace XUGL
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,
float smoothness = 2f)
{