1

我使用 .Net 的 ILNumerics 数学库创建了一个简单的线图。我想与绘制的数据进行交互。应该可以选择绘制数据的子集并对其执行不同的数学运算。我想使用标记进行选择,但我无法检索到正确的位置值。我想我必须以某种方式改变点......也许有人可以帮助我?

这是代码的简化版本:

    private void ilPanel1_Load(object sender, EventArgs e)
    {
        var scene = new ILScene();
        //create 2D data
        ILArray<float> line1 = new float[,] { 
                    {0.0f,  1.0f, 2.0f }, 
                    {0.0f,  2.0f , 3.0f} };


        var linePlot1 = new ILLinePlot(line1.T,
            lineColor: Color.Blue,
            lineWidth: 3,
            markerStyle: MarkerStyle.Dot);

        var plot = scene.Add(new ILPlotCube());
        plot.Add(linePlot1);

        linePlot1.Marker.MouseClick += Marker_MouseClick;
        ilPanel1.Scene = scene;
    }

一旦我单击其中一个标记,就会调用 Marker_MouseClick 事件。

    void Marker_MouseClick(object sender, ILMouseEventArgs e)
    {
        ILGroup group = e.Target.Parent;
        ILMarker marker = group.First<ILMarker>();

        var posx = e.LocationF.X;
        var posY = e.LocationF.Y;
    }

但这些位置并不是指我的轴的缩放。有没有一种简单的方法可以将 LocationF 值转换为我的轴的缩放比例?或者是否有另一种方法可以在触发事件后获取标记的 x 和 y 值?

蒂姆

4

1 回答 1

0

鼠标事件参数为您提供 LocationF 属性。它反映了鼠标在视口(2D)坐标系中的位置。ILNumerics 中的视口由 ILCamera 建立。所以我们在父相机节点的坐标系中拥有鼠标位置。

为了将鼠标位置转换为绘图立方体的坐标系,必须累积从相机到绘图立方体节点的变换矩阵。生成的转换矩阵会将任何鼠标位置转换为绘图立方体坐标系。

SO上有一个类似的问题:如何从鼠标在ILNumerics表面图上的点击位置找到表面的3D坐标? 鼠标点击位置的表面 3d 坐标/17681163#17681163

于 2013-11-11T12:03:17.713 回答