mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-14 20:00:09 +00:00
[bug] fix change color in runtime did not refresh
This commit is contained in:
@@ -120,14 +120,37 @@ namespace XCharts.Runtime
|
||||
}
|
||||
/// <summary>
|
||||
/// Redraw chart in next frame.
|
||||
/// |在下一帧刷新图表。
|
||||
/// |在下一帧刷新整个图表。
|
||||
/// </summary>
|
||||
public void RefreshChart()
|
||||
{
|
||||
foreach (var serie in m_Series)
|
||||
serie.ResetInteract();
|
||||
m_RefreshChart = true;
|
||||
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>
|
||||
/// Remove all series and legend data.
|
||||
/// |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)
|
||||
{
|
||||
if (serie == null) return;
|
||||
RefreshPainter(GetPainterIndexBySerie(serie));
|
||||
}
|
||||
|
||||
@@ -363,9 +364,7 @@ namespace XCharts.Runtime
|
||||
if (m_Painter == null) return;
|
||||
if (m_RefreshChart)
|
||||
{
|
||||
m_Painter.Refresh();
|
||||
foreach (var painter in m_PainterList) painter.Refresh();
|
||||
if (m_PainterTop != null) m_PainterTop.Refresh();
|
||||
CheckRefreshPainter();
|
||||
m_RefreshChart = false;
|
||||
}
|
||||
}
|
||||
@@ -553,6 +552,8 @@ namespace XCharts.Runtime
|
||||
serie.context.dataPoints.Clear();
|
||||
serie.context.dataIgnores.Clear();
|
||||
serie.animation.context.isAllItemAnimationEnd = true;
|
||||
if (!serie.context.pointerEnter)
|
||||
serie.ResetInteract();
|
||||
|
||||
if (m_OnDrawSerieBefore != null)
|
||||
{
|
||||
|
||||
@@ -63,14 +63,10 @@ namespace XCharts.Runtime
|
||||
serie.context.pointerEnter = false;
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
var barColor = SerieHelper.GetItemColor(serie, serieData, chart.theme, serie.context.colorIndex, false);
|
||||
var barToColor = SerieHelper.GetItemToColor(serie, serieData, chart.theme, serie.context.colorIndex, false);
|
||||
serieData.interact.SetColor(ref needInteract, barColor, barToColor);
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
chart.RefreshPainter(serie);
|
||||
serieData.context.highlight = false;
|
||||
serieData.interact.Reset();
|
||||
}
|
||||
chart.RefreshPainter(serie);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,25 +26,17 @@ namespace XCharts.Runtime
|
||||
{
|
||||
if (m_LastCheckContextFlag != needCheck)
|
||||
{
|
||||
var needAnimation1 = false;
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
serie.context.pointerItemDataIndex = -1;
|
||||
serie.context.pointerEnter = false;
|
||||
serie.interact.SetValue(ref needAnimation1, lineWidth, false);
|
||||
foreach (var serieData in serie.data)
|
||||
{
|
||||
var symbol = SerieHelper.GetSerieSymbol(serie, serieData);
|
||||
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);
|
||||
serieData.interact.Reset();
|
||||
}
|
||||
if (SeriesHelper.IsStack(chart.series))
|
||||
chart.RefreshTopPainter();
|
||||
else
|
||||
chart.RefreshPainter(serie);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -821,12 +821,14 @@ namespace XCharts.Runtime
|
||||
return m_VertsDirty ||
|
||||
symbol.vertsDirty ||
|
||||
lineStyle.vertsDirty ||
|
||||
(lineArrow != null && lineArrow.vertsDirty) ||
|
||||
itemStyle.vertsDirty ||
|
||||
(lineArrow != null && lineArrow.vertsDirty) ||
|
||||
(areaStyle != null && areaStyle.vertsDirty) ||
|
||||
(label != null && label.vertsDirty) ||
|
||||
(labelLine != null && labelLine.vertsDirty) ||
|
||||
(emphasis != null && emphasis.vertsDirty) ||
|
||||
(titleStyle != null && titleStyle.vertsDirty);
|
||||
(titleStyle != null && titleStyle.vertsDirty) ||
|
||||
AnySerieDataVerticesDirty();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -835,12 +837,17 @@ namespace XCharts.Runtime
|
||||
get
|
||||
{
|
||||
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()
|
||||
{
|
||||
base.ClearVerticesDirty();
|
||||
foreach (var serieData in m_Data)
|
||||
serieData.ClearVerticesDirty();
|
||||
symbol.ClearVerticesDirty();
|
||||
lineStyle.ClearVerticesDirty();
|
||||
itemStyle.ClearVerticesDirty();
|
||||
@@ -859,6 +866,8 @@ namespace XCharts.Runtime
|
||||
public override void ClearComponentDirty()
|
||||
{
|
||||
base.ClearComponentDirty();
|
||||
foreach (var serieData in m_Data)
|
||||
serieData.ClearComponentDirty();
|
||||
symbol.ClearComponentDirty();
|
||||
lineStyle.ClearComponentDirty();
|
||||
itemStyle.ClearComponentDirty();
|
||||
@@ -880,6 +889,24 @@ namespace XCharts.Runtime
|
||||
labelDirty = 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>
|
||||
/// 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>
|
||||
|
||||
@@ -105,6 +105,54 @@ namespace XCharts.Runtime
|
||||
private List<bool> m_DataUpdateFlag = new List<bool>();
|
||||
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()
|
||||
{
|
||||
index = 0;
|
||||
|
||||
Reference in New Issue
Block a user