增加SymbolEmptyTriangleEmptyDiamond的支持,优化Symbol表现效果

This commit is contained in:
monitor1394
2023-07-31 13:32:53 +08:00
parent 0ffc6d7efe
commit f36ca34055
4 changed files with 68 additions and 23 deletions

View File

@@ -49,53 +49,92 @@ namespace XCharts.Runtime
{
if (tickness > 0)
{
UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true);
UGL.DrawRoundRectangle(vh, pos, symbolSize * 2, symbolSize * 2, color, color, 0, cornerRadius, true);
UGL.DrawBorder(vh, pos, symbolSize, symbolSize, tickness, borderColor, 0, cornerRadius);
}
else
UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true);
UGL.DrawRoundRectangle(vh, pos, symbolSize * 2, symbolSize * 2, color, color, 0, cornerRadius, true);
}
break;
case SymbolType.EmptyRect:
if (gap > 0)
{
UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
UGL.DrawBorder(vh, pos, symbolSize / 2, symbolSize / 2, tickness, color);
UGL.DrawBorder(vh, pos, symbolSize * 2, symbolSize * 2, tickness, color);
}
else
{
UGL.DrawBorder(vh, pos, symbolSize / 2, symbolSize / 2, tickness, color);
UGL.DrawBorder(vh, pos, symbolSize * 2 - tickness * 2, symbolSize * 2 - tickness * 2, tickness, color);
}
break;
case SymbolType.Triangle:
case SymbolType.EmptyTriangle:
if (gap > 0)
{
UGL.DrawTriangle(vh, pos, symbolSize + gap, backgroundColor);
UGL.DrawTriangle(vh, pos, symbolSize, color, toColor);
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f + gap * 2f, backgroundColor);
UGL.DrawTriangle(vh, pos, symbolSize * 1.4f, color, toColor);
}
else
{
UGL.DrawTriangle(vh, pos, symbolSize, 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;
case SymbolType.Diamond:
case SymbolType.EmptyDiamond:
var xRadius = symbolSize;
var yRadius = symbolSize * 1.5f;
if (gap > 0)
{
UGL.DrawDiamond(vh, pos, symbolSize + gap, backgroundColor);
UGL.DrawDiamond(vh, pos, symbolSize, color, toColor);
UGL.DrawDiamond(vh, pos, xRadius + gap, yRadius + gap, backgroundColor, backgroundColor);
UGL.DrawDiamond(vh, pos, xRadius, yRadius, color, toColor);
}
else
{
UGL.DrawDiamond(vh, pos, symbolSize, 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;
case SymbolType.Arrow:
case SymbolType.EmptyArrow:
var arrowWidth = symbolSize * 2;
var arrowHeight = arrowWidth * 1.5f;
var arrowOffset = 0;
var arrowDent = arrowWidth / 3.3f;
if (gap > 0)
{
arrowWidth = (symbolSize + gap) * 2;
arrowHeight = arrowWidth * 1.5f;
arrowOffset = 0;
arrowDent = arrowWidth / 3.3f;
var dir = (pos - startPos).normalized;
var sharpPos = pos + gap * dir;
UGL.DrawArrow(vh, startPos, sharpPos, arrowWidth, arrowHeight,
arrowOffset, arrowDent, backgroundColor);
}
arrowWidth = symbolSize * 2;
arrowHeight = arrowWidth * 1.5f;
arrowOffset = 0;
arrowDent = arrowWidth / 3.3f;
UGL.DrawArrow(vh, startPos, pos, arrowWidth, arrowHeight,
arrowOffset, arrowDent, color);
if (type == SymbolType.EmptyArrow)
{
arrowWidth = (symbolSize - tickness) * 2;
arrowHeight = arrowWidth * 1.5f;
arrowOffset = 0;
arrowDent = arrowWidth / 3.3f;
var dir = (pos - startPos).normalized;
var sharpPos = pos - tickness * dir;
UGL.DrawArrow(vh, startPos, sharpPos, arrowWidth, arrowHeight,
arrowOffset, arrowDent, backgroundColor);
}
break;
}
}