diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index aaeb8ea6..1f0a77ed 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -80,6 +80,7 @@ slug: /changelog ## master +* (2025.09.01) 增加`AxisLine`的`startExtendLength`和`endExtendLength`设置轴线的延长线 * (2025.08.27) 修复`Serie`的`TitleStyle`在数据变更时不及时刷新的问题 * (2025.05.19) 修复`TMP`开启时`Axis`运行报错 * (2025.04.25) 修复`MarkArea`指定`yValue`或`xValue`时绘制区域不准确的问题 diff --git a/Editor/ChildComponents/LineDrawer.cs b/Editor/ChildComponents/LineDrawer.cs index dceb65c0..893bf271 100644 --- a/Editor/ChildComponents/LineDrawer.cs +++ b/Editor/ChildComponents/LineDrawer.cs @@ -29,6 +29,8 @@ namespace XCharts.Editor { base.DrawExtendeds(prop); PropertyField(prop, "m_OnZero"); + PropertyField(prop, "m_StartExtendLength"); + PropertyField(prop, "m_EndExtendLength"); PropertyField(prop, "m_ShowArrow"); PropertyField(prop, "m_Arrow"); } diff --git a/Runtime/Component/Axis/AxisHandler.cs b/Runtime/Component/Axis/AxisHandler.cs index 31750b2f..1b576b95 100644 --- a/Runtime/Component/Axis/AxisHandler.cs +++ b/Runtime/Component/Axis/AxisHandler.cs @@ -832,17 +832,19 @@ namespace XCharts var lineWidth = axis.axisLine.GetWidth(theme.lineWidth); var lineType = axis.axisLine.GetType(theme.lineType); var lineColor = axis.axisLine.GetColor(theme.lineColor); + var sExtendLength = axis.axisLine.startExtendLength; + var eExtendLength = axis.axisLine.endExtendLength; if (orient == Orient.Horizonal) { - var left = new Vector3(startX - lineWidth - (inverse ? offset : 0), startY); - var right = new Vector3(startX + axisLength + lineWidth + (!inverse ? offset : 0), startY); + var left = new Vector3(startX - lineWidth - (inverse ? offset : 0) - sExtendLength, startY); + var right = new Vector3(startX + axisLength + lineWidth + (!inverse ? offset : 0) + eExtendLength, startY); ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, left, right, lineColor); } else { - var bottom = new Vector3(startX, startY - lineWidth - (inverse ? offset : 0)); - var top = new Vector3(startX, startY + axisLength + lineWidth + (!inverse ? offset : 0)); + var bottom = new Vector3(startX, startY - lineWidth - (inverse ? offset : 0) - sExtendLength); + var top = new Vector3(startX, startY + axisLength + lineWidth + (!inverse ? offset : 0) + eExtendLength); ChartDrawer.DrawLineStyle(vh, lineType, lineWidth, bottom, top, lineColor); } } diff --git a/Runtime/Component/Axis/AxisLine.cs b/Runtime/Component/Axis/AxisLine.cs index acf91d1b..dd4c82ab 100644 --- a/Runtime/Component/Axis/AxisLine.cs +++ b/Runtime/Component/Axis/AxisLine.cs @@ -10,6 +10,8 @@ namespace XCharts.Runtime public class AxisLine : BaseLine { [SerializeField] private bool m_OnZero; + [SerializeField] private float m_StartExtendLength; + [SerializeField] private float m_EndExtendLength; [SerializeField] private bool m_ShowArrow; [SerializeField] private ArrowStyle m_Arrow = new ArrowStyle(); @@ -23,6 +25,24 @@ namespace XCharts.Runtime set { if (PropertyUtil.SetStruct(ref m_OnZero, value)) SetVerticesDirty(); } } /// + /// Extend length of the axis line at the start. + /// ||轴线起点延长线长度。 + /// + public float startExtendLength + { + get { return m_StartExtendLength; } + set { if (PropertyUtil.SetStruct(ref m_StartExtendLength, value)) SetVerticesDirty(); } + } + /// + /// Extend length of the axis line at the end. + /// ||轴线终点延长线长度。 + /// + public float endExtendLength + { + get { return m_EndExtendLength; } + set { if (PropertyUtil.SetStruct(ref m_EndExtendLength, value)) SetVerticesDirty(); } + } + /// /// Whether to show the arrow symbol of axis. /// ||是否显示箭头。 ///