增加BaseChartTriggerTooltip()接口尝试触发ToolTip

This commit is contained in:
monitor1394
2023-04-14 13:35:45 +08:00
parent 674d937104
commit 0af76517e1
6 changed files with 98 additions and 0 deletions

View File

@@ -204,6 +204,7 @@ Inherits or Implemented: [BaseGraph](#basegraph),[ISerializationCallbackReceiver
|CanAddChartComponent()||public bool CanAddChartComponent(Type type)|
|CanAddSerie()||public bool CanAddSerie(Type type)|
|CanAddSerie<T>()||public bool CanAddSerie<T>() where T : Serie|
|CancelTooltip()|v3.7.0|public void CancelTooltip()<br/>cancel tooltip. |
|CanMultipleComponent()||public bool CanMultipleComponent(Type type)|
|ClampInChart()||public void ClampInChart(ref Vector3 pos)|
|ClampInGrid()||public Vector3 ClampInGrid(GridCoord grid, Vector3 pos)|
@@ -319,6 +320,8 @@ Inherits or Implemented: [BaseGraph](#basegraph),[ISerializationCallbackReceiver
|SetSeriePainterMaterial()||public void SetSeriePainterMaterial(Material material)<br/>设置Serie Painter的材质球 |
|SetTopPainterMaterial()||public void SetTopPainterMaterial(Material material)<br/>设置Top Painter的材质球 |
|SetUpperPainterMaterial()||public void SetUpperPainterMaterial(Material material)<br/>设置Upper Painter的材质球 |
|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex)<br/>trigger tooltip by data index. |
|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(Vector3 localPosition)<br/>trigger tooltip by chart local position. |
|TryAddChartComponent()||public bool TryAddChartComponent(Type type)|
|TryAddChartComponent&lt;T&gt;()||public bool TryAddChartComponent&lt;T&gt;() where T : MainComponent|
|TryAddChartComponent&lt;T&gt;()||public bool TryAddChartComponent&lt;T&gt;(out T component) where T : MainComponent|
@@ -355,6 +358,8 @@ Inherits or Implemented: [MaskableGraphic](#maskablegraphic),[IPointerDownHandle
|onPointerUp||public Action&lt;PointerEventData, BaseGraph&gt; onPointerUp<br/>鼠标弹起回调。 |
|onScroll||public Action&lt;PointerEventData, BaseGraph&gt; onScroll<br/>鼠标滚动回调。 |
|CheckWarning()||public string CheckWarning()<br/>检测警告信息。 |
|LocalPointToScreenPoint()|v3.7.0|public Vector2 LocalPointToScreenPoint(Vector2 localPoint)<br/>chart local point to screen point. |
|LocalPointToWorldPoint()|v3.7.0|public Vector2 LocalPointToWorldPoint(Vector2 localPoint)<br/>chart local point to world point. |
|OnBeginDrag()||public virtual void OnBeginDrag(PointerEventData eventData)|
|OnDrag()||public virtual void OnDrag(PointerEventData eventData)|
|OnEndDrag()||public virtual void OnEndDrag(PointerEventData eventData)|

View File

@@ -204,6 +204,7 @@ Inherits or Implemented: [BaseGraph](#basegraph),[ISerializationCallbackReceiver
|CanAddChartComponent()||public bool CanAddChartComponent(Type type)|
|CanAddSerie()||public bool CanAddSerie(Type type)|
|CanAddSerie&lt;T&gt;()||public bool CanAddSerie&lt;T&gt;() where T : Serie|
|CancelTooltip()|v3.7.0|public void CancelTooltip()<br/>取消Tooltip. |
|CanMultipleComponent()||public bool CanMultipleComponent(Type type)|
|ClampInChart()||public void ClampInChart(ref Vector3 pos)|
|ClampInGrid()||public Vector3 ClampInGrid(GridCoord grid, Vector3 pos)|
@@ -319,6 +320,8 @@ Inherits or Implemented: [BaseGraph](#basegraph),[ISerializationCallbackReceiver
|SetSeriePainterMaterial()||public void SetSeriePainterMaterial(Material material)<br/>设置Serie Painter的材质球 |
|SetTopPainterMaterial()||public void SetTopPainterMaterial(Material material)<br/>设置Top Painter的材质球 |
|SetUpperPainterMaterial()||public void SetUpperPainterMaterial(Material material)<br/>设置Upper Painter的材质球 |
|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex)<br/>尝试触发指定数据项的Tooltip. |
|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(Vector3 localPosition)<br/>在指定的位置尝试触发Tooltip. |
|TryAddChartComponent()||public bool TryAddChartComponent(Type type)|
|TryAddChartComponent&lt;T&gt;()||public bool TryAddChartComponent&lt;T&gt;() where T : MainComponent|
|TryAddChartComponent&lt;T&gt;()||public bool TryAddChartComponent&lt;T&gt;(out T component) where T : MainComponent|
@@ -355,6 +358,8 @@ Inherits or Implemented: [MaskableGraphic](#maskablegraphic),[IPointerDownHandle
|onPointerUp||public Action&lt;PointerEventData, BaseGraph&gt; onPointerUp<br/>鼠标弹起回调。 |
|onScroll||public Action&lt;PointerEventData, BaseGraph&gt; onScroll<br/>鼠标滚动回调。 |
|CheckWarning()||public string CheckWarning()<br/>检测警告信息。 |
|LocalPointToScreenPoint()|v3.7.0|public Vector2 LocalPointToScreenPoint(Vector2 localPoint)<br/>图表内坐标转屏幕坐标。 |
|LocalPointToWorldPoint()|v3.7.0|public Vector2 LocalPointToWorldPoint(Vector2 localPoint)<br/>图表内坐标转世界坐标。 |
|OnBeginDrag()||public virtual void OnBeginDrag(PointerEventData eventData)|
|OnDrag()||public virtual void OnDrag(PointerEventData eventData)|
|OnEndDrag()||public virtual void OnEndDrag(PointerEventData eventData)|

View File

@@ -66,6 +66,7 @@ slug: /changelog
## master
* (2023.04.14) 增加`BaseChart``TriggerTooltip()`接口尝试触发`ToolTip`
* (2023.04.12) 优化`RadarCood`设置`startAngle`时文本也跟随调整位置
* (2023.04.12) 增加`Radar`对通配符`{b}`的支持
* (2023.04.11) 修复动态添加组件时`Inspector`可能异常的问题

View File

@@ -667,5 +667,64 @@ namespace XCharts.Runtime
SerieHelper.GetItemColor(out color, out toColor, serie, null, m_Theme);
return color;
}
/// <summary>
/// trigger tooltip by data index.
/// |尝试触发指定数据项的Tooltip.
/// </summary>
/// <param name="dataIndex">数据项索引</param>
/// <returns></returns>
[Since("v3.7.0")]
public bool TriggerTooltip(int dataIndex)
{
var serie = GetSerie(0);
if (serie == null) return false;
var dataPoints = serie.context.dataPoints;
var dataPoint = Vector3.zero;
if (dataPoints.Count == 0)
{
if (serie.dataCount == 0) return false;
dataIndex = dataIndex % serie.dataCount;
var serieData = serie.GetSerieData(dataIndex);
if (serieData == null) return false;
dataPoint = serie.GetSerieData(dataIndex).context.position;
}
else
{
dataIndex = dataIndex % dataPoints.Count;
dataPoint = dataPoints[dataIndex];
}
return TriggerTooltip(dataPoint);
}
/// <summary>
/// trigger tooltip by chart local position.
/// |在指定的位置尝试触发Tooltip.
/// </summary>
/// <param name="localPosition"></param>
/// <returns></returns>
[Since("v3.7.0")]
public bool TriggerTooltip(Vector3 localPosition)
{
var screenPoint = LocalPointToScreenPoint(localPosition);
var eventData = new PointerEventData(EventSystem.current);
eventData.position = screenPoint;
OnPointerEnter(eventData);
return true;
}
/// <summary>
/// cancel tooltip.
/// |取消Tooltip.
/// </summary>
[Since("v3.7.0")]
public void CancelTooltip()
{
var tooltip = GetChartComponent<Tooltip>();
if (tooltip != null)
{
tooltip.SetActive(false);
}
}
}
}

View File

@@ -173,6 +173,32 @@ namespace XCharts.Runtime
return true;
}
/// <summary>
/// chart local point to screen point.
/// |图表内坐标转屏幕坐标。
/// </summary>
/// <param name="localPoint">图表内的坐标</param>
/// <returns>屏幕坐标</returns>
[Since("v3.7.0")]
public Vector2 LocalPointToScreenPoint(Vector2 localPoint)
{
var cam = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : canvas.worldCamera;
var wordPoint = rectTransform.TransformPoint(localPoint);
return RectTransformUtility.WorldToScreenPoint(cam, wordPoint);
}
/// <summary>
/// chart local point to world point.
/// |图表内坐标转世界坐标。
/// </summary>
/// <param name="localPoint">图表内的坐标</param>
/// <returns>世界坐标</returns>
[Since("v3.7.0")]
public Vector2 LocalPointToWorldPoint(Vector2 localPoint)
{
return rectTransform.TransformPoint(localPoint);
}
/// <summary>
/// 保存图表为图片。
/// </summary>

View File

@@ -233,10 +233,12 @@ namespace XCharts.Runtime
serieData.context.currentAngle = serieData.context.toAngle;
}
var halfDegree = (serieData.context.toAngle - startDegree) / 2;
var halfRadius = serie.context.insideRadius + (serieData.context.outsideRadius - serie.context.insideRadius) / 2;
serieData.context.halfAngle = startDegree + halfDegree;
serieData.context.angle = startDegree + halfDegree;
serieData.context.offsetCenter = serie.context.center;
serieData.context.insideRadius = serie.context.insideRadius;
serieData.context.position = ChartHelper.GetPosition(serie.context.center, serieData.context.halfAngle, halfRadius);
if (offset > 0)
{
var currRad = serieData.context.halfAngle * Mathf.Deg2Rad;