增加LegenditemInactiveOpacity可设置非激活状态时的颜色透明度 (#343)

This commit is contained in:
monitor1394
2025-03-27 22:35:02 +08:00
parent 546ff1f61a
commit 85b92ca2cc
12 changed files with 108 additions and 33 deletions

View File

@@ -79,6 +79,7 @@ namespace XCharts.Runtime
[SerializeField] private float m_ItemGap = 10f;
[SerializeField] private bool m_ItemAutoColor = true;
[SerializeField] private float m_ItemOpacity = 1;
[SerializeField][Since("v3.15.0")] private float m_ItemInactiveOpacity = 1;
[SerializeField] private string m_Formatter;
[SerializeField] private LabelStyle m_LabelStyle = new LabelStyle();
[SerializeField][Since("v3.10.0")] private TextLimit m_TextLimit = new TextLimit();
@@ -182,6 +183,15 @@ namespace XCharts.Runtime
set { if (PropertyUtil.SetStruct(ref m_ItemOpacity, value)) SetComponentDirty(); }
}
/// <summary>
/// the opacity of item color when item is inactive.
/// ||图例标记的图形在非激活状态下的颜色透明度。
/// </summary>
public float itemInactiveOpacity
{
get { return m_ItemInactiveOpacity; }
set { if (PropertyUtil.SetStruct(ref m_ItemInactiveOpacity, value)) SetComponentDirty(); }
}
/// <summary>
/// No longer used, the use of LabelStyle.formatter instead.
/// ||不再使用使用LabelStyle.formatter代替。
/// </summary>

View File

@@ -92,15 +92,15 @@ namespace XCharts.Runtime
{
if (!SeriesHelper.IsLegalLegendName(datas[i])) continue;
string legendName = datas[i];
var serieIndex = isAnySerieColorByData ? 0 : i;
var dataIndex = isAnySerieColorByData ? i : 0;
var serieIndex = isAnySerieColorByData ? 0 : i;
var dataIndex = isAnySerieColorByData ? i : 0;
var legendContent = GetFormatterContent(legend, dataIndex, datas[i], serieIndex);
if (legend.textLimit.enable)
legendContent = legend.textLimit.GetLimitContent(legendContent);
var readIndex = chart.m_LegendRealShowName.IndexOf(datas[i]);
var active = chart.IsActiveByLegend(datas[i]);
var bgColor = LegendHelper.GetIconColor(chart, legend, readIndex, datas[i], active);
bgColor.a = legend.itemOpacity;
bgColor.a = active ? legend.itemOpacity : legend.itemInactiveOpacity;
var item = LegendHelper.AddLegendItem(chart, legend, i, legendName, legendObject.transform, chart.theme,
legendContent, bgColor, active, readIndex);
legend.SetButton(legendName, item, totalLegend);

View File

@@ -16,7 +16,7 @@ namespace XCharts.Runtime
else
return !ChartHelper.IsClearColor(textStyle.color) ? textStyle.color : theme.legend.textColor;
}
else return theme.legend.unableColor;
else return theme.legend.inactiveColor;
}
public static Color GetIconColor(BaseChart chart, Legend legend, int readIndex, string legendName, bool active)
@@ -30,7 +30,7 @@ namespace XCharts.Runtime
else
return legend.GetColor(readIndex);
}
else return chart.theme.legend.unableColor;
else return chart.theme.legend.inactiveColor;
}
public static LegendItem AddLegendItem(BaseChart chart, Legend legend, int i, string legendName, Transform parent,