From da8f379741f877b5246d805a9d05dc299b25e247 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Sat, 4 Dec 2021 08:46:32 +0800 Subject: [PATCH] Added new symbol type: EmptyRect, EmptyTriangle, EmptyDiamond --- CHANGELOG-EN.md | 1 + CHANGELOG.md | 1 + Runtime/Component/Sub/SerieSymbol.cs | 5 +++- Runtime/Internal/Utility/ChartDrawer.cs | 40 +++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) 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;