请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

舜华

注册会员

2

主题

6

帖子

20

积分

注册会员

积分
20
  • 60

    金币

  • 2

    主题

  • 6

    帖子

最新发帖
舜华
注册会员   /  发表于:2025-3-17 17:45  /   查看:71  /  回复:1
10金币
你好,请问一下我现在想要使用鼠标选择3D图表上的点,然后求出最大值,但是使用鼠标点击3d图表时,显示的坐标和标签位置不一样,是x,y,z的计算公式有问题吗


private bool MouseToDataCoord(Point mousePos, ref double x, ref double y, ref double z)
{
    // 获取3D图表数据
    Chart3DDataSetGrid gridset = (Chart3DDataSetGrid)c1Chart3D1.ChartGroups[0].ChartData.SetGrid;

    // 获取图表区域
    Rectangle chartArea = c1Chart3D1.ClientRectangle;

    // 检查鼠标是否在图表区域内
    if (!chartArea.Contains(mousePos))
        return false;

    // 计算数据坐标
    int col = (int)((mousePos.X - chartArea.Left) / (double)chartArea.Width * gridset.ColumnCount);
    int row = (int)((mousePos.Y - chartArea.Top) / (double)chartArea.Height * gridset.RowCount);

    if (row >= 0 && row < gridset.RowCount && col >= 0 && col < gridset.ColumnCount)
    {
        x = gridset.RowOrigin + row * gridset.RowDelta;
        y = gridset.ColumnOrigin + col * gridset.ColumnDelta;
        z = gridset.GetValue(row, col);
        return true;
    }

    return false;
}

1 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-3-18 16:42:25
沙发
本帖最后由 Richard.Ma 于 2025-3-18 16:43 编辑

我没有明白你这个是怎么算出来的,chart3D并没有提供鼠标点击坐标的交互。一个3D图表,旋转到各个角度后,显示的结果本身就不一样,比如显示的是3D柱形图。那么组件至少得具备判断此时的光标在哪个柱形表面的能力,才有可能实现你说的功能
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部