mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-28 03:58:49 +00:00
增加SymbolStyle的size2参数支持长方形标记
This commit is contained in:
@@ -78,6 +78,7 @@ slug: /changelog
|
|||||||
|
|
||||||
## master
|
## master
|
||||||
|
|
||||||
|
* (2024.12.27) 增加`SymbolStyle`的`size2`参数支持长方形标记
|
||||||
* (2024.12.26) 优化`Text`在`TextMeshPro`下的居中对齐方式
|
* (2024.12.26) 优化`Text`在`TextMeshPro`下的居中对齐方式
|
||||||
* (2024.12.25) 增加`Tooltip`的`itemFormatter`设置`{f0}`支持
|
* (2024.12.25) 增加`Tooltip`的`itemFormatter`设置`{f0}`支持
|
||||||
* (2024.12.25) 修复`YAxis`在范围变更刷新时部分label可能不显示的问题
|
* (2024.12.25) 修复`YAxis`在范围变更刷新时部分label可能不显示的问题
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace XCharts.Editor
|
|||||||
}
|
}
|
||||||
PropertyField(prop, "m_Color");
|
PropertyField(prop, "m_Color");
|
||||||
PropertyField(prop, "m_Size");
|
PropertyField(prop, "m_Size");
|
||||||
|
PropertyField(prop, "m_Size2");
|
||||||
PropertyField(prop, "m_Gap");
|
PropertyField(prop, "m_Gap");
|
||||||
PropertyField(prop, "m_BorderWidth");
|
PropertyField(prop, "m_BorderWidth");
|
||||||
PropertyField(prop, "m_EmptyColor");
|
PropertyField(prop, "m_EmptyColor");
|
||||||
|
|||||||
@@ -86,12 +86,14 @@ namespace XCharts.Runtime
|
|||||||
[SerializeField] protected Color32 m_Color;
|
[SerializeField] protected Color32 m_Color;
|
||||||
[SerializeField][Since("v3.13.0")] protected float m_BorderWidth = 0f;
|
[SerializeField][Since("v3.13.0")] protected float m_BorderWidth = 0f;
|
||||||
[SerializeField][Since("v3.13.0")] protected Color32 m_EmptyColor;
|
[SerializeField][Since("v3.13.0")] protected Color32 m_EmptyColor;
|
||||||
|
[SerializeField][Since("v3.13.0")] protected float m_Size2 = 0f;
|
||||||
|
|
||||||
public virtual void Reset()
|
public virtual void Reset()
|
||||||
{
|
{
|
||||||
m_Show = false;
|
m_Show = false;
|
||||||
m_Type = SymbolType.EmptyCircle;
|
m_Type = SymbolType.EmptyCircle;
|
||||||
m_Size = 0f;
|
m_Size = 0f;
|
||||||
|
m_Size2 = 0f;
|
||||||
m_Gap = 0;
|
m_Gap = 0;
|
||||||
m_Width = 0f;
|
m_Width = 0f;
|
||||||
m_Height = 0f;
|
m_Height = 0f;
|
||||||
@@ -128,6 +130,15 @@ namespace XCharts.Runtime
|
|||||||
set { if (PropertyUtil.SetStruct(ref m_Size, value)) SetVerticesDirty(); }
|
set { if (PropertyUtil.SetStruct(ref m_Size, value)) SetVerticesDirty(); }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// the size of symbol.
|
||||||
|
/// ||标记的大小。当为Rect时,size2表示高度。
|
||||||
|
/// </summary>
|
||||||
|
public float size2
|
||||||
|
{
|
||||||
|
get { return m_Size2; }
|
||||||
|
set { if (PropertyUtil.SetStruct(ref m_Size2, value)) SetVerticesDirty(); }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
/// the gap of symbol and line segment.
|
/// the gap of symbol and line segment.
|
||||||
/// ||图形标记和线条的间隙距离。
|
/// ||图形标记和线条的间隙距离。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -83,12 +83,12 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
public void DrawClipSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
public void DrawClipSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
||||||
Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor, float gap,
|
Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor, float gap,
|
||||||
bool clip, float[] cornerRadius, GridCoord grid, Vector3 startPos)
|
bool clip, float[] cornerRadius, GridCoord grid, Vector3 startPos, float symbolSize2 = 0)
|
||||||
{
|
{
|
||||||
if (!IsInChart(pos)) return;
|
if (!IsInChart(pos)) return;
|
||||||
if (!clip || (clip && (grid.Contains(pos))))
|
if (!clip || (clip && (grid.Contains(pos))))
|
||||||
DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor,
|
DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor,
|
||||||
gap, cornerRadius, startPos);
|
gap, cornerRadius, startPos, symbolSize2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawClipZebraLine(VertexHelper vh, Vector3 p1, Vector3 p2, float size, float zebraWidth,
|
public void DrawClipZebraLine(VertexHelper vh, Vector3 p1, Vector3 p2, float size, float zebraWidth,
|
||||||
@@ -101,22 +101,22 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
||||||
Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor,
|
Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor,
|
||||||
float gap, float[] cornerRadius)
|
float gap, float[] cornerRadius, float symbolSize2 = 0)
|
||||||
{
|
{
|
||||||
DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor,
|
DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, emptyColor, borderColor,
|
||||||
gap, cornerRadius, Vector3.zero);
|
gap, cornerRadius, Vector3.zero, symbolSize2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
public void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
||||||
Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor,
|
Vector3 pos, Color32 color, Color32 toColor, Color32 emptyColor, Color32 borderColor,
|
||||||
float gap, float[] cornerRadius, Vector3 startPos)
|
float gap, float[] cornerRadius, Vector3 startPos, float symbolSize2 = 0)
|
||||||
{
|
{
|
||||||
var backgroundColor = GetChartBackgroundColor();
|
var backgroundColor = GetChartBackgroundColor();
|
||||||
if (ChartHelper.IsClearColor(emptyColor))
|
if (ChartHelper.IsClearColor(emptyColor))
|
||||||
emptyColor = backgroundColor;
|
emptyColor = backgroundColor;
|
||||||
var smoothness = settings.cicleSmoothness;
|
var smoothness = settings.cicleSmoothness;
|
||||||
ChartDrawer.DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, gap,
|
ChartDrawer.DrawSymbol(vh, type, symbolSize, tickness, pos, color, toColor, gap,
|
||||||
cornerRadius, emptyColor, backgroundColor, borderColor, smoothness, startPos);
|
cornerRadius, emptyColor, backgroundColor, borderColor, smoothness, startPos, symbolSize2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color32 GetXLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
|
public Color32 GetXLerpColor(Color32 areaColor, Color32 areaToColor, Vector3 pos, GridCoord grid)
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
public static void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
public static void DrawSymbol(VertexHelper vh, SymbolType type, float symbolSize, float tickness,
|
||||||
Vector3 pos, Color32 color, Color32 toColor, float gap, float[] cornerRadius,
|
Vector3 pos, Color32 color, Color32 toColor, float gap, float[] cornerRadius,
|
||||||
Color32 emptyColor, Color32 backgroundColor, Color32 borderColor, float smoothness, Vector3 startPos)
|
Color32 emptyColor, Color32 backgroundColor, Color32 borderColor, float smoothness,
|
||||||
|
Vector3 startPos, float symbolSize2 = 0f)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@@ -41,24 +42,31 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SymbolType.Rect:
|
case SymbolType.Rect:
|
||||||
if (gap > 0)
|
if (symbolSize2 > 0 && symbolSize2 != symbolSize)
|
||||||
{
|
{
|
||||||
UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
|
UGL.DrawRectangle(vh, pos, symbolSize, symbolSize2, color, toColor);
|
||||||
UGL.DrawSquare(vh, pos, symbolSize, color, toColor);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (tickness > 0)
|
if (gap > 0)
|
||||||
{
|
{
|
||||||
UGL.DrawRoundRectangle(vh, pos, symbolSize * 2, symbolSize * 2, color, color, 0, cornerRadius, true);
|
UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
|
||||||
UGL.DrawBorder(vh, pos, symbolSize, symbolSize, tickness, borderColor, 0, cornerRadius);
|
UGL.DrawSquare(vh, pos, symbolSize, color, toColor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
UGL.DrawRoundRectangle(vh, pos, symbolSize * 2, symbolSize * 2, color, color, 0, cornerRadius, true);
|
{
|
||||||
|
if (tickness > 0)
|
||||||
|
{
|
||||||
|
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 * 2, symbolSize * 2, color, color, 0, cornerRadius, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SymbolType.EmptyRect:
|
case SymbolType.EmptyRect:
|
||||||
if (tickness == 0) tickness = 4f;
|
if (tickness == 0) tickness = 4f;
|
||||||
if (gap > 0)
|
if (gap > 0)
|
||||||
{
|
{
|
||||||
UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
|
UGL.DrawSquare(vh, pos, symbolSize + gap, backgroundColor);
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ namespace XCharts.Runtime
|
|||||||
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, serie.context.colorIndex, state);
|
var emptyColor = SerieHelper.GetItemBackgroundColor(serie, serieData, chart.theme, serie.context.colorIndex, state);
|
||||||
serieData.context.rect = new Rect(pos.x - symbolSize / 2, pos.y - symbolSize / 2, symbolSize, symbolSize);
|
serieData.context.rect = new Rect(pos.x - symbolSize / 2, pos.y - symbolSize / 2, symbolSize, symbolSize);
|
||||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
||||||
color, color, emptyColor, borderColor, symbol.gap, cornerRadius);
|
color, color, emptyColor, borderColor, symbol.gap, cornerRadius, symbol.size2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (visualMap.hoverLink && highlight && emphasisStyle != null &&
|
if (visualMap.hoverLink && highlight && emphasisStyle != null &&
|
||||||
@@ -461,7 +461,7 @@ namespace XCharts.Runtime
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, pos,
|
||||||
color, color, emptyColor, borderColor, symbol.gap, cornerRadius);
|
color, color, emptyColor, borderColor, symbol.gap, cornerRadius, symbol.size2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (visualMap.hoverLink && highlight && emphasisStyle != null &&
|
if (visualMap.hoverLink && highlight && emphasisStyle != null &&
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
symbolSize = serie.animation.GetSysmbolSize(symbolSize);
|
||||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.context.position,
|
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, serieData.context.position,
|
||||||
symbolColor, symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius);
|
symbolColor, symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius, symbol.size2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ namespace XCharts.Runtime
|
|||||||
SerieHelper.GetItemColor(out symbolColor, out symbolToColor, out symbolEmptyColor, serie, serieData, chart.theme, colorIndex, serieState);
|
SerieHelper.GetItemColor(out symbolColor, out symbolToColor, out symbolEmptyColor, serie, serieData, chart.theme, colorIndex, serieState);
|
||||||
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, serieState);
|
SerieHelper.GetSymbolInfo(out borderColor, out symbolBorder, out cornerRadius, serie, serieData, chart.theme, serieState);
|
||||||
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, point, symbolColor,
|
chart.DrawSymbol(vh, symbol.type, symbolSize, symbolBorder, point, symbolColor,
|
||||||
symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius);
|
symbolToColor, symbolEmptyColor, borderColor, symbol.gap, cornerRadius, symbol.size2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -495,7 +495,7 @@ namespace XCharts.Runtime
|
|||||||
symbolToColor = m_RadarCoord.outRangeColor;
|
symbolToColor = m_RadarCoord.outRangeColor;
|
||||||
}
|
}
|
||||||
chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.context.labelPosition, symbolColor,
|
chart.DrawSymbol(vh, serie.symbol.type, symbolSize, symbolBorder, serieData.context.labelPosition, symbolColor,
|
||||||
symbolToColor, symbolEmptyColor, borderColor, serie.symbol.gap, cornerRadius);
|
symbolToColor, symbolEmptyColor, borderColor, serie.symbol.gap, cornerRadius, serie.symbol.size2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!serie.animation.IsFinish())
|
if (!serie.animation.IsFinish())
|
||||||
|
|||||||
@@ -762,7 +762,7 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
var color = symbol.GetColor(defaultColor);
|
var color = symbol.GetColor(defaultColor);
|
||||||
chart.DrawSymbol(vh, symbol.type, symbol.size, 1, pos,
|
chart.DrawSymbol(vh, symbol.type, symbol.size, 1, pos,
|
||||||
color, color, ColorUtil.clearColor32, color, symbol.gap, null);
|
color, color, ColorUtil.clearColor32, color, symbol.gap, null, symbol.size2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnPointerDown(PointerEventData eventData)
|
public override void OnPointerDown(PointerEventData eventData)
|
||||||
|
|||||||
Reference in New Issue
Block a user