修复Pie的点击有时候不响应的问题 (#357)

This commit is contained in:
monitor1394
2026-01-15 08:53:42 +08:00
parent b311d17d94
commit 90e9187808
2 changed files with 8 additions and 4 deletions

View File

@@ -80,6 +80,7 @@ slug: /changelog
## master
* (2026.01.15) 修复`Pie`的点击有时候不响应的问题 (#357)
* (2026.01.08) 增加`DataZoom``minZoomRatio`替换旧的`minShowNum` (#350)
* (2025.11.05) 修复`Axis``indicatorLabel`无法隐藏的问题
* (2025.11.03) 增加`Tooltip``Title`可通过`TitleLabelStyle``numericFormatter`格式化时间显示 (#353)

View File

@@ -271,6 +271,7 @@ namespace XCharts.Runtime
}
var offset = 0f;
var interactOffset = serie.animation.interaction.GetOffset(serie.context.outsideRadius);
serieData.context.insideRadius = serie.context.insideRadius;
if (serie.pieClickOffset && (serieData.selected || serieData.context.selected))
{
offset += interactOffset;
@@ -554,10 +555,11 @@ namespace XCharts.Runtime
var dist = Vector2.Distance(local, serie.context.center);
var interactOffset = serie.animation.interaction.GetOffset(serie.context.outsideRadius);
var maxRadius = serie.context.outsideRadius + 2 * interactOffset;
if (dist < serie.context.insideRadius || dist > maxRadius)
var maxRadius = serie.context.outsideRadius + interactOffset;
if (dist < serie.context.insideRadius - interactOffset || dist > maxRadius)
{
return -1;
}
var dir = local - new Vector2(serie.context.center.x, serie.context.center.y);
var angle = ChartHelper.GetAngle360(Vector2.up, dir);
for (int i = 0; i < serie.data.Count; i++)
@@ -568,7 +570,8 @@ namespace XCharts.Runtime
var ndist = (serieData.selected || serieData.context.selected) ?
Vector2.Distance(local, serieData.context.offsetCenter) :
dist;
if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius)
ndist = dist;
if (ndist >= serieData.context.insideRadius - interactOffset && ndist <= serieData.context.outsideRadius)
{
return i;
}