diff --git a/CHANGELOG.md b/CHANGELOG.md index 337b06be..22c48741 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ ## master +* (2022.08.26) 增加`Legend`新图标类型`Candlestick` * (2022.08.26) 优化`CandlestickChart`表现,调整相关的`AddData()`接口参数 * (2022.08.26) 增加`Tooltip`的`position`参数支持设置移动平台不同的显示位置 * (2022.08.26) 删除`Tooltip`的`fixedXEnable`和`fixedYEnable`参数 diff --git a/Runtime/Component/Legend/Legend.cs b/Runtime/Component/Legend/Legend.cs index df3e5b46..9b8e53b4 100644 --- a/Runtime/Component/Legend/Legend.cs +++ b/Runtime/Component/Legend/Legend.cs @@ -43,6 +43,10 @@ namespace XCharts.Runtime /// 菱形。 /// Diamond, + /// + /// 烛台(可用于K线图)。 + /// + Candlestick, } /// /// Selected mode of legend, which controls whether series can be toggled displaying by clicking legends. diff --git a/Runtime/Component/Legend/LegendHandler.cs b/Runtime/Component/Legend/LegendHandler.cs index 724d5d06..ab3df818 100644 --- a/Runtime/Component/Legend/LegendHandler.cs +++ b/Runtime/Component/Legend/LegendHandler.cs @@ -196,31 +196,34 @@ namespace XCharts.Runtime if (legend.iconType == Legend.Type.Auto) { var serie = chart.GetSerie(item.legendName); - if (serie != null && serie is Line) + if (serie != null) { - var sp = new Vector3(rect.center.x - rect.width / 2, rect.center.y); - var ep = new Vector3(rect.center.x + rect.width / 2, rect.center.y); - UGL.DrawLine(vh, sp, ep, chart.settings.legendIconLineWidth, color); - if (!serie.symbol.show) continue; - switch (serie.symbol.type) + if (serie is Line || serie is SimplifiedLine) { - case SymbolType.None: - continue; - case SymbolType.Circle: - iconType = Legend.Type.Circle; - break; - case SymbolType.Diamond: - iconType = Legend.Type.Diamond; - break; - case SymbolType.EmptyCircle: - iconType = Legend.Type.EmptyCircle; - break; - case SymbolType.Rect: - iconType = Legend.Type.Rect; - break; - case SymbolType.Triangle: - iconType = Legend.Type.Triangle; - break; + var sp = new Vector3(rect.center.x - rect.width / 2, rect.center.y); + var ep = new Vector3(rect.center.x + rect.width / 2, rect.center.y); + UGL.DrawLine(vh, sp, ep, chart.settings.legendIconLineWidth, color); + if (!serie.symbol.show) continue; + switch (serie.symbol.type) + { + case SymbolType.None: + continue; + case SymbolType.Circle: + iconType = Legend.Type.Circle; + break; + case SymbolType.Diamond: + iconType = Legend.Type.Diamond; + break; + case SymbolType.EmptyCircle: + iconType = Legend.Type.EmptyCircle; + break; + case SymbolType.Rect: + iconType = Legend.Type.Rect; + break; + case SymbolType.Triangle: + iconType = Legend.Type.Triangle; + break; + } } } else @@ -249,6 +252,12 @@ namespace XCharts.Runtime case Legend.Type.Triangle: UGL.DrawTriangle(vh, rect.center, 1.2f * radius, color); break; + case Legend.Type.Candlestick: + UGL.DrawRoundRectangle(vh, rect.center, rect.width / 2, rect.height / 2, color, color, + 0, null, false, 0.5f); + UGL.DrawLine(vh, new Vector3(rect.center.x, rect.center.y - rect.height / 2), + new Vector3(rect.center.x, rect.center.y + rect.height / 2), 1, color); + break; } } }