增加SerieSymbol的Color、Opacity配置

This commit is contained in:
monitor1394
2019-08-07 23:33:27 +08:00
parent 4684affac6
commit 6c680d0d98
6 changed files with 6912 additions and 37203 deletions

View File

@@ -80,6 +80,8 @@ namespace XCharts
[SerializeField] private float m_SelectedDataScale = 1.5f;
[SerializeField] private SymbolSizeCallback m_SizeCallback;
[SerializeField] private SymbolSizeCallback m_SelectedSizeCallback;
[SerializeField] private Color m_Color;
[SerializeField] [Range(0, 1)] private float m_Opacity = 1;
/// <summary>
/// the type of symbol.
@@ -135,7 +137,18 @@ namespace XCharts
/// </summary>
/// <value></value>
public SymbolSizeCallback selectedSizeCallback { get { return m_SelectedSizeCallback; } set { m_SelectedSizeCallback = value; } }
/// <summary>
/// the color of symbol,default from serie.
/// 标记图形的颜色,默认和系列一致。
/// </summary>
/// <value></value>
public Color color { get { return m_Color; } set { m_Color = value; } }
/// <summary>
/// the opacity of color.
/// 图形标记的透明度。
/// </summary>
/// <value></value>
public float opacity { get { return m_Opacity; } set { m_Opacity = value; } }
private List<float> m_AnimationSize = new List<float>() { 0, 5, 10 };
/// <summary>
/// the setting for effect scatter.

View File

@@ -96,11 +96,12 @@ namespace XCharts
for (int n = 0; n < m_Series.Count; n++)
{
var serie = m_Series.GetSerie(n);
if (!serie.show) continue;
var color = m_ThemeInfo.GetColor(serie.index);
float symbolSize = serie.symbol.size;
if (!serie.show || serie.symbol.type == SerieSymbolType.None) continue;
var color = serie.symbol.color != Color.clear ? serie.symbol.color : (Color)m_ThemeInfo.GetColor(serie.index);
color.a *= serie.symbol.opacity;
for (int i = 0; i < serie.dataPoints.Count; i++)
{
float symbolSize = serie.symbol.size;
Vector3 p = serie.dataPoints[i];
if ((m_Tooltip.show && m_Tooltip.IsSelected(i))
|| serie.data[i].highlighted
@@ -115,18 +116,16 @@ namespace XCharts
}
else
{
symbolSize = serie.symbol.selectedSize;
}
}
DrawSymbol(vh, serie.symbol.type, symbolSize, m_Line.tickness, p, color);
DrawSymbol(vh, serie.symbol.type, symbolSize, serie.lineStyle.width, p, color);
}
}
}
// List<Vector3> lastPoints = new List<Vector3>();
// List<Vector3> lastSmoothPoints = new List<Vector3>();
// List<Vector3> smoothPoints = new List<Vector3>();
List<Vector3> smoothSegmentPoints = new List<Vector3>();
private void DrawXLineSerie(VertexHelper vh, int serieIndex, Color lineColor, Serie serie, ref List<float> seriesHig)
{

View File

@@ -297,9 +297,11 @@ namespace XCharts
{
var symbolSize = (isHighlight ? serie.symbol.selectedSize : serie.symbol.size);
float symbolRadius = symbolSize - serie.lineStyle.width * 2;
var symbolColor = serie.symbol.color != Color.clear ? serie.symbol.color : lineColor;
symbolColor.a *= serie.symbol.opacity;
foreach (var point in pointList)
{
DrawSymbol(vh, serie.symbol.type, symbolSize, serie.lineStyle.width, point, lineColor);
DrawSymbol(vh, serie.symbol.type, symbolSize, serie.lineStyle.width, point, symbolColor);
}
}
}
@@ -447,7 +449,7 @@ namespace XCharts
}
}
}
if (!highlight)
{
if (m_Tooltip.IsActive())

View File

@@ -79,8 +79,8 @@ namespace XCharts
{
continue;
}
var color = m_ThemeInfo.GetColor(serieNameCount);
color.a = 200;
var color = serie.symbol.color != Color.clear ? serie.symbol.color : (Color)m_ThemeInfo.GetColor(serieNameCount);
color.a *= serie.symbol.opacity;
int maxCount = maxShowDataNumber > 0 ?
(maxShowDataNumber > serie.dataCount ? serie.dataCount : maxShowDataNumber)
: serie.dataCount;
@@ -111,7 +111,7 @@ namespace XCharts
for (int count = 0; count < serie.symbol.animationSize.Count; count++)
{
var nowSize = serie.symbol.animationSize[count];
color.a = (byte)(255 * (symbolSize - nowSize) / symbolSize);
color.a = (symbolSize - nowSize) / symbolSize;
DrawSymbol(vh, serie.symbol.type, nowSize, 3, pos, color);
}
RefreshChart();