Beispiel #1
0
        protected override void CheckTootipArea(Vector2 local)
        {
            if (local.x < zeroX || local.x > zeroX + coordinateWid ||
                local.y < zeroY || local.y > zeroY + coordinateHig)
            {
                tooltip.DataIndex = 0;
                RefreshTooltip();
            }
            else
            {
                if (xAxis.type == AxisType.value)
                {
                    float splitWid = yAxis.GetDataWidth(coordinateHig);
                    for (int i = 0; i < yAxis.GetDataNumber(); i++)
                    {
                        float pY = zeroY + i * splitWid;
                        if (yAxis.boundaryGap)
                        {
                            if (local.y > pY && local.y <= pY + splitWid)
                            {
                                tooltip.DataIndex = i + 1;
                                break;
                            }
                        }
                        else
                        {
                            if (local.y > pY - splitWid / 2 && local.y <= pY + splitWid / 2)
                            {
                                tooltip.DataIndex = i + 1;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    float splitWid = xAxis.GetDataWidth(coordinateWid);
                    for (int i = 0; i < xAxis.GetDataNumber(); i++)
                    {
                        float pX = zeroX + i * splitWid;
                        if (xAxis.boundaryGap)
                        {
                            if (local.x > pX && local.x <= pX + splitWid)
                            {
                                tooltip.DataIndex = i + 1;
                                break;
                            }
                        }
                        else
                        {
                            if (local.x > pX - splitWid / 2 && local.x <= pX + splitWid / 2)
                            {
                                tooltip.DataIndex = i + 1;
                                break;
                            }
                        }
                    }
                }
            }
            if (tooltip.DataIndex > 0)
            {
                tooltip.UpdatePos(new Vector2(local.x + 18, local.y - 25));
                RefreshTooltip();
                if (tooltip.LastDataIndex != tooltip.DataIndex)
                {
                    RefreshChart();

                    string lastDataCode = xAxis.GetKeyData(tooltip.LastDataIndex);
                    if (!string.IsNullOrEmpty(lastDataCode))
                    {
                        OnExit?.Invoke(lastDataCode);
                    }

                    string dataCode = xAxis.GetKeyData(tooltip.DataIndex);
                    if (!string.IsNullOrEmpty(dataCode))
                    {
                        OnEnter?.Invoke(dataCode);
                    }
                }
                tooltip.LastDataIndex = tooltip.DataIndex;
            }
        }