mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-20 07:20:08 +00:00
增加Legend几种内置图标的支持 #90
This commit is contained in:
@@ -19,6 +19,37 @@ namespace XCharts
|
||||
[System.Serializable]
|
||||
public class Legend : MainComponent, IPropertyChanged
|
||||
{
|
||||
public enum Type
|
||||
{
|
||||
/// <summary>
|
||||
/// 自动匹配。
|
||||
/// </summary>
|
||||
Auto,
|
||||
/// <summary>
|
||||
/// 自定义图标。
|
||||
/// </summary>
|
||||
Custom,
|
||||
/// <summary>
|
||||
/// 空心圆。
|
||||
/// </summary>
|
||||
EmptyCircle,
|
||||
/// <summary>
|
||||
/// 圆形。
|
||||
/// </summary>
|
||||
Circle,
|
||||
/// <summary>
|
||||
/// 正方形。可通过Setting的legendIconCornerRadius参数调整圆角。
|
||||
/// </summary>
|
||||
Rect,
|
||||
/// <summary>
|
||||
/// 三角形。
|
||||
/// </summary>
|
||||
Triangle,
|
||||
/// <summary>
|
||||
/// 菱形。
|
||||
/// </summary>
|
||||
Diamond,
|
||||
}
|
||||
/// <summary>
|
||||
/// Selected mode of legend, which controls whether series can be toggled displaying by clicking legends.
|
||||
/// 图例选择的模式,控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 None 关闭。
|
||||
@@ -39,10 +70,11 @@ namespace XCharts
|
||||
None
|
||||
}
|
||||
[SerializeField] private bool m_Show = true;
|
||||
[SerializeField] private Type m_IconType;
|
||||
[SerializeField] private SelectedMode m_SelectedMode;
|
||||
[SerializeField] private Orient m_Orient = Orient.Horizonal;
|
||||
[SerializeField] private Location m_Location = Location.defaultRight;
|
||||
[SerializeField] private float m_ItemWidth = 24.0f;
|
||||
[SerializeField] private float m_ItemWidth = 25.0f;
|
||||
[SerializeField] private float m_ItemHeight = 12.0f;
|
||||
[SerializeField] private float m_ItemGap = 10f;
|
||||
[SerializeField] private bool m_ItemAutoColor = true;
|
||||
@@ -64,11 +96,20 @@ namespace XCharts
|
||||
set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Type of legend.
|
||||
/// 图例类型。
|
||||
/// [default:Type.Auto]
|
||||
/// </summary>
|
||||
public Type iconType
|
||||
{
|
||||
get { return m_IconType; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_IconType, value)) SetAllDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// Selected mode of legend, which controls whether series can be toggled displaying by clicking legends.
|
||||
/// 选择模式。控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 None 关闭。
|
||||
/// [default:SelectedMode.Multiple]
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public SelectedMode selectedMode
|
||||
{
|
||||
get { return m_SelectedMode; }
|
||||
@@ -226,11 +267,12 @@ namespace XCharts
|
||||
{
|
||||
var legend = new Legend
|
||||
{
|
||||
m_IconType = Type.Auto,
|
||||
m_Show = false,
|
||||
m_SelectedMode = SelectedMode.Multiple,
|
||||
m_Orient = Orient.Horizonal,
|
||||
m_Location = Location.defaultTop,
|
||||
m_ItemWidth = 24.0f,
|
||||
m_ItemWidth = 25.0f,
|
||||
m_ItemHeight = 12.0f,
|
||||
m_ItemGap = 10f,
|
||||
};
|
||||
@@ -336,6 +378,7 @@ namespace XCharts
|
||||
{
|
||||
m_DataBtnList[name] = item;
|
||||
int index = m_DataBtnList.Values.Count;
|
||||
item.SetIconActive(iconType == Type.Custom);
|
||||
item.SetActive(show);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ namespace XCharts
|
||||
[SerializeField] [Range(1f, 20)] protected float m_LineSmoothness = 2f;
|
||||
[SerializeField] [Range(1f, 20)] protected float m_LineSegmentDistance = 3f;
|
||||
[SerializeField] [Range(1, 10)] protected float m_CicleSmoothness = 2f;
|
||||
[SerializeField] protected float m_LegendIconLineWidth = 2;
|
||||
[SerializeField] private float[] m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f };
|
||||
|
||||
/// <summary>
|
||||
/// max painter.
|
||||
@@ -75,6 +77,26 @@ namespace XCharts
|
||||
set { if (PropertyUtil.SetStruct(ref m_CicleSmoothness, value < 0 ? 1f : value)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// the width of line serie legend.
|
||||
/// Line类型图例图标的线条宽度。
|
||||
/// </summary>
|
||||
public float legendIconLineWidth
|
||||
{
|
||||
get { return m_LegendIconLineWidth; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_LegendIconLineWidth, value)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The radius of rounded corner. Its unit is px. Use array to respectively specify the 4 corner radiuses((clockwise upper left, upper right, bottom right and bottom left)).
|
||||
/// 图例圆角半径。用数组分别指定4个圆角半径(顺时针左上,右上,右下,左下)。
|
||||
/// </summary>
|
||||
public float[] legendIconCornerRadius
|
||||
{
|
||||
get { return m_LegendIconCornerRadius; }
|
||||
set { if (PropertyUtil.SetClass(ref m_LegendIconCornerRadius, value, true)) SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
public void Copy(Settings settings)
|
||||
{
|
||||
m_MaxPainter = settings.maxPainter;
|
||||
@@ -82,6 +104,8 @@ namespace XCharts
|
||||
m_LineSmoothness = settings.lineSmoothness;
|
||||
m_LineSegmentDistance = settings.lineSegmentDistance;
|
||||
m_CicleSmoothness = settings.cicleSmoothness;
|
||||
m_LegendIconLineWidth = settings.legendIconLineWidth;
|
||||
ChartHelper.CopyArray(m_LegendIconCornerRadius, settings.legendIconCornerRadius);
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
@@ -100,6 +124,8 @@ namespace XCharts
|
||||
m_LineSmoothness = XChartsSettings.lineSmoothness,
|
||||
m_LineSegmentDistance = XChartsSettings.lineSegmentDistance,
|
||||
m_CicleSmoothness = XChartsSettings.cicleSmoothness,
|
||||
m_LegendIconLineWidth = 2,
|
||||
m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user