mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-29 12:48:47 +00:00
[bug] fix change color in runtime did not refresh
This commit is contained in:
@@ -120,14 +120,37 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Redraw chart in next frame.
|
/// Redraw chart in next frame.
|
||||||
/// |在下一帧刷新图表。
|
/// |在下一帧刷新整个图表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void RefreshChart()
|
public void RefreshChart()
|
||||||
{
|
{
|
||||||
|
foreach (var serie in m_Series)
|
||||||
|
serie.ResetInteract();
|
||||||
m_RefreshChart = true;
|
m_RefreshChart = true;
|
||||||
if (m_Painter) m_Painter.Refresh();
|
if (m_Painter) m_Painter.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Redraw chart serie in next frame.
|
||||||
|
/// |在下一帧刷新图表的指定serie。
|
||||||
|
/// </summary>
|
||||||
|
public void RefreshChart(int serieIndex)
|
||||||
|
{
|
||||||
|
RefreshPainter(GetSerie(serieIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Redraw chart serie in next frame.
|
||||||
|
/// |在下一帧刷新图表的指定serie。
|
||||||
|
/// </summary>
|
||||||
|
public void RefreshChart(Serie serie)
|
||||||
|
{
|
||||||
|
if (serie == null) return;
|
||||||
|
serie.ResetInteract();
|
||||||
|
RefreshPainter(serie);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Remove all series and legend data.
|
/// Remove all series and legend data.
|
||||||
/// |It just emptying all of serie's data without emptying the list of series.
|
/// |It just emptying all of serie's data without emptying the list of series.
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ namespace XCharts.Runtime
|
|||||||
|
|
||||||
public void RefreshPainter(Serie serie)
|
public void RefreshPainter(Serie serie)
|
||||||
{
|
{
|
||||||
|
if (serie == null) return;
|
||||||
RefreshPainter(GetPainterIndexBySerie(serie));
|
RefreshPainter(GetPainterIndexBySerie(serie));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,9 +364,7 @@ namespace XCharts.Runtime
|
|||||||
if (m_Painter == null) return;
|
if (m_Painter == null) return;
|
||||||
if (m_RefreshChart)
|
if (m_RefreshChart)
|
||||||
{
|
{
|
||||||
m_Painter.Refresh();
|
CheckRefreshPainter();
|
||||||
foreach (var painter in m_PainterList) painter.Refresh();
|
|
||||||
if (m_PainterTop != null) m_PainterTop.Refresh();
|
|
||||||
m_RefreshChart = false;
|
m_RefreshChart = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -553,6 +552,8 @@ namespace XCharts.Runtime
|
|||||||
serie.context.dataPoints.Clear();
|
serie.context.dataPoints.Clear();
|
||||||
serie.context.dataIgnores.Clear();
|
serie.context.dataIgnores.Clear();
|
||||||
serie.animation.context.isAllItemAnimationEnd = true;
|
serie.animation.context.isAllItemAnimationEnd = true;
|
||||||
|
if (!serie.context.pointerEnter)
|
||||||
|
serie.ResetInteract();
|
||||||
|
|
||||||
if (m_OnDrawSerieBefore != null)
|
if (m_OnDrawSerieBefore != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -63,14 +63,10 @@ namespace XCharts.Runtime
|
|||||||
serie.context.pointerEnter = false;
|
serie.context.pointerEnter = false;
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
{
|
{
|
||||||
var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false);
|
serieData.context.highlight = false;
|
||||||
var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false);
|
serieData.interact.Reset();
|
||||||
serieData.interact.SetColor(ref needInteract, barColor, barToColor);
|
|
||||||
}
|
|
||||||
if (needInteract)
|
|
||||||
{
|
|
||||||
chart.RefreshPainter(serie);
|
|
||||||
}
|
}
|
||||||
|
chart.RefreshPainter(serie);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,25 +26,17 @@ namespace XCharts.Runtime
|
|||||||
{
|
{
|
||||||
if (m_LastCheckContextFlag != needCheck)
|
if (m_LastCheckContextFlag != needCheck)
|
||||||
{
|
{
|
||||||
var needAnimation1 = false;
|
|
||||||
m_LastCheckContextFlag = needCheck;
|
m_LastCheckContextFlag = needCheck;
|
||||||
serie.context.pointerItemDataIndex = -1;
|
serie.context.pointerItemDataIndex = -1;
|
||||||
serie.context.pointerEnter = false;
|
serie.context.pointerEnter = false;
|
||||||
serie.interact.SetValue(ref needAnimation1, lineWidth, false);
|
|
||||||
foreach (var serieData in serie.data)
|
foreach (var serieData in serie.data)
|
||||||
{
|
{
|
||||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
serieData.interact.Reset();
|
||||||
var symbolSize = symbol.GetSize(serieData.data, chart.theme.serie.lineSymbolSize);
|
|
||||||
serieData.context.highlight = false;
|
|
||||||
serieData.interact.SetValue(ref needAnimation1, symbolSize);
|
|
||||||
}
|
|
||||||
if (needAnimation1)
|
|
||||||
{
|
|
||||||
if (SeriesHelper.IsStack(chart.series))
|
|
||||||
chart.RefreshTopPainter();
|
|
||||||
else
|
|
||||||
chart.RefreshPainter(serie);
|
|
||||||
}
|
}
|
||||||
|
if (SeriesHelper.IsStack(chart.series))
|
||||||
|
chart.RefreshTopPainter();
|
||||||
|
else
|
||||||
|
chart.RefreshPainter(serie);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -821,12 +821,14 @@ namespace XCharts.Runtime
|
|||||||
return m_VertsDirty ||
|
return m_VertsDirty ||
|
||||||
symbol.vertsDirty ||
|
symbol.vertsDirty ||
|
||||||
lineStyle.vertsDirty ||
|
lineStyle.vertsDirty ||
|
||||||
(lineArrow != null && lineArrow.vertsDirty) ||
|
|
||||||
itemStyle.vertsDirty ||
|
itemStyle.vertsDirty ||
|
||||||
|
(lineArrow != null && lineArrow.vertsDirty) ||
|
||||||
(areaStyle != null && areaStyle.vertsDirty) ||
|
(areaStyle != null && areaStyle.vertsDirty) ||
|
||||||
(label != null && label.vertsDirty) ||
|
(label != null && label.vertsDirty) ||
|
||||||
|
(labelLine != null && labelLine.vertsDirty) ||
|
||||||
(emphasis != null && emphasis.vertsDirty) ||
|
(emphasis != null && emphasis.vertsDirty) ||
|
||||||
(titleStyle != null && titleStyle.vertsDirty);
|
(titleStyle != null && titleStyle.vertsDirty) ||
|
||||||
|
AnySerieDataVerticesDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -835,12 +837,17 @@ namespace XCharts.Runtime
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
return m_ComponentDirty
|
return m_ComponentDirty
|
||||||
|| (titleStyle != null && titleStyle.componentDirty);
|
|| symbol.componentDirty
|
||||||
|
|| (titleStyle != null && titleStyle.componentDirty)
|
||||||
|
|| (label != null && label.componentDirty)
|
||||||
|
|| (labelLine != null && labelLine.componentDirty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override void ClearVerticesDirty()
|
public override void ClearVerticesDirty()
|
||||||
{
|
{
|
||||||
base.ClearVerticesDirty();
|
base.ClearVerticesDirty();
|
||||||
|
foreach (var serieData in m_Data)
|
||||||
|
serieData.ClearVerticesDirty();
|
||||||
symbol.ClearVerticesDirty();
|
symbol.ClearVerticesDirty();
|
||||||
lineStyle.ClearVerticesDirty();
|
lineStyle.ClearVerticesDirty();
|
||||||
itemStyle.ClearVerticesDirty();
|
itemStyle.ClearVerticesDirty();
|
||||||
@@ -859,6 +866,8 @@ namespace XCharts.Runtime
|
|||||||
public override void ClearComponentDirty()
|
public override void ClearComponentDirty()
|
||||||
{
|
{
|
||||||
base.ClearComponentDirty();
|
base.ClearComponentDirty();
|
||||||
|
foreach (var serieData in m_Data)
|
||||||
|
serieData.ClearComponentDirty();
|
||||||
symbol.ClearComponentDirty();
|
symbol.ClearComponentDirty();
|
||||||
lineStyle.ClearComponentDirty();
|
lineStyle.ClearComponentDirty();
|
||||||
itemStyle.ClearComponentDirty();
|
itemStyle.ClearComponentDirty();
|
||||||
@@ -880,6 +889,24 @@ namespace XCharts.Runtime
|
|||||||
labelDirty = true;
|
labelDirty = true;
|
||||||
titleDirty = true;
|
titleDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool AnySerieDataVerticesDirty()
|
||||||
|
{
|
||||||
|
if (this is ISimplifiedSerie)
|
||||||
|
return false;
|
||||||
|
foreach (var serieData in m_Data)
|
||||||
|
if (serieData.vertsDirty) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool AnySerieDataComponentDirty()
|
||||||
|
{
|
||||||
|
if (this is ISimplifiedSerie)
|
||||||
|
return false;
|
||||||
|
foreach (var serieData in m_Data)
|
||||||
|
if (serieData.componentDirty) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether the serie is highlighted.
|
/// Whether the serie is highlighted.
|
||||||
/// |该系列是否高亮,一般由图例悬停触发。
|
/// |该系列是否高亮,一般由图例悬停触发。
|
||||||
@@ -1032,6 +1059,12 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ResetInteract()
|
||||||
|
{
|
||||||
|
foreach (var serieData in m_Data)
|
||||||
|
serieData.interact.Reset();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清空所有数据
|
/// 清空所有数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -105,6 +105,54 @@ namespace XCharts.Runtime
|
|||||||
private List<bool> m_DataUpdateFlag = new List<bool>();
|
private List<bool> m_DataUpdateFlag = new List<bool>();
|
||||||
private List<Vector2> m_PolygonPoints = new List<Vector2>();
|
private List<Vector2> m_PolygonPoints = new List<Vector2>();
|
||||||
|
|
||||||
|
public override bool vertsDirty
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_VertsDirty
|
||||||
|
|| (labelLine != null && labelLine.vertsDirty)
|
||||||
|
|| (itemStyle != null && itemStyle.vertsDirty)
|
||||||
|
|| (symbol != null && symbol.vertsDirty)
|
||||||
|
|| (lineStyle != null && lineStyle.vertsDirty)
|
||||||
|
|| (areaStyle != null && areaStyle.vertsDirty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override bool componentDirty
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_ComponentDirty
|
||||||
|
|| (labelStyle != null && labelStyle.componentDirty)
|
||||||
|
|| (labelLine != null && labelLine.componentDirty)
|
||||||
|
|| (titleStyle != null && titleStyle.componentDirty)
|
||||||
|
|| (emphasis != null && emphasis.componentDirty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ClearVerticesDirty()
|
||||||
|
{
|
||||||
|
base.ClearVerticesDirty();
|
||||||
|
if (labelLine != null) labelLine.ClearVerticesDirty();
|
||||||
|
if (itemStyle != null) itemStyle.ClearVerticesDirty();
|
||||||
|
if (lineStyle != null) lineStyle.ClearVerticesDirty();
|
||||||
|
if (areaStyle != null) areaStyle.ClearVerticesDirty();
|
||||||
|
if (areaStyle != null) areaStyle.ClearVerticesDirty();
|
||||||
|
if (symbol != null) symbol.ClearVerticesDirty();
|
||||||
|
if (emphasis != null) emphasis.ClearVerticesDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ClearComponentDirty()
|
||||||
|
{
|
||||||
|
base.ClearComponentDirty();
|
||||||
|
if (labelLine != null) labelLine.ClearComponentDirty();
|
||||||
|
if (itemStyle != null) itemStyle.ClearComponentDirty();
|
||||||
|
if (lineStyle != null) lineStyle.ClearComponentDirty();
|
||||||
|
if (areaStyle != null) areaStyle.ClearComponentDirty();
|
||||||
|
if (areaStyle != null) areaStyle.ClearComponentDirty();
|
||||||
|
if (symbol != null) symbol.ClearComponentDirty();
|
||||||
|
if (emphasis != null) emphasis.ClearComponentDirty();
|
||||||
|
}
|
||||||
|
|
||||||
public void Reset()
|
public void Reset()
|
||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user