diff --git a/CHANGELOG-EN.md b/CHANGELOG-EN.md
index 0da722c2..a6f0bb51 100644
--- a/CHANGELOG-EN.md
+++ b/CHANGELOG-EN.md
@@ -41,6 +41,7 @@
## branch-2.0
+* (2021.12.04) Added `Symbol` new types: `EmptyRect`, `EmptyTriangle`, `EmptyDiamond`
* (2021.12.04) Added setting symbol empty area color by itemStyle's backgroundColor
* (2021.12.03) Fixed formatter `{c}` not work #175
* (2021.12.03) Fixed axis `boundaryGap` display error in some cases #174
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 34429609..843cd95f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,6 +41,7 @@
## branch-2.0
+* (2021.12.04) 增加`Symbol`新类型:`EmptyRect`,`EmptyTriangle`,`EmptyDiamond`
* (2021.12.04) 增加`Symbol`的`Empty`区域颜色可通过`ItemStyle`的`backgroundColor`设置的支持
* (2021.12.03) 修复`Formatter`的`{c}`通配符不生效的问题 #175
* (2021.12.03) 修复`Axis`的`boundaryGap`某些情况下显示的问题 #174
diff --git a/Runtime/Component/Sub/SerieSymbol.cs b/Runtime/Component/Sub/SerieSymbol.cs
index 35305ea8..97937abf 100644
--- a/Runtime/Component/Sub/SerieSymbol.cs
+++ b/Runtime/Component/Sub/SerieSymbol.cs
@@ -48,7 +48,10 @@ namespace XCharts
///
/// 自定义标记。
///
- Custom
+ Custom,
+ EmptyRect,
+ EmptyTriangle,
+ EmptyDiamond
}
///
diff --git a/Runtime/Internal/Utility/ChartDrawer.cs b/Runtime/Internal/Utility/ChartDrawer.cs
index c57e0556..aab54fb7 100644
--- a/Runtime/Internal/Utility/ChartDrawer.cs
+++ b/Runtime/Internal/Utility/ChartDrawer.cs
@@ -56,6 +56,20 @@ namespace XCharts
UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true);
}
break;
+ case SerieSymbolType.EmptyRect:
+ if (gap > 0)
+ {
+ UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
+ UGL.DrawSquare(vh, pos, symbolSize, color, toColor);
+ UGL.DrawSquare(vh, pos, symbolSize - tickness, centerFillColor, centerFillColor);
+ }
+ else
+ {
+ UGL.DrawRoundRectangle(vh, pos, symbolSize, symbolSize, color, color, 0, cornerRadius, true);
+ UGL.DrawRoundRectangle(vh, pos, symbolSize - tickness, symbolSize - tickness,
+ centerFillColor, centerFillColor, 0, cornerRadius, true);
+ }
+ break;
case SerieSymbolType.Triangle:
if (gap > 0)
{
@@ -67,6 +81,19 @@ namespace XCharts
UGL.DrawTriangle(vh, pos, symbolSize, color, toColor);
}
break;
+ case SerieSymbolType.EmptyTriangle:
+ if (gap > 0)
+ {
+ UGL.DrawTriangle(vh, pos, symbolSize + gap, backgroundColor);
+ UGL.DrawTriangle(vh, pos, symbolSize, color, toColor);
+ UGL.DrawTriangle(vh, pos, symbolSize - tickness, centerFillColor, centerFillColor);
+ }
+ else
+ {
+ UGL.DrawTriangle(vh, pos, symbolSize, color, toColor);
+ UGL.DrawTriangle(vh, pos, symbolSize - tickness, centerFillColor, centerFillColor);
+ }
+ break;
case SerieSymbolType.Diamond:
if (gap > 0)
{
@@ -78,6 +105,19 @@ namespace XCharts
UGL.DrawDiamond(vh, pos, symbolSize, color, toColor);
}
break;
+ case SerieSymbolType.EmptyDiamond:
+ if (gap > 0)
+ {
+ UGL.DrawDiamond(vh, pos, symbolSize + gap, backgroundColor);
+ UGL.DrawDiamond(vh, pos, symbolSize, color, toColor);
+ UGL.DrawDiamond(vh, pos, symbolSize - tickness, centerFillColor, centerFillColor);
+ }
+ else
+ {
+ UGL.DrawDiamond(vh, pos, symbolSize, color, toColor);
+ UGL.DrawDiamond(vh, pos, symbolSize - tickness, centerFillColor, centerFillColor);
+ }
+ break;
case SerieSymbolType.Arrow:
var arrowWidth = symbolSize * 2;
var arrowHeight = arrowWidth * 1.5f;