我使用ILNumerics数学库为.Net创建了一个简单的线图。我想与绘制的数据进行交互。应该可以选择绘制数据的子集并对其执行不同的数学运算。我想使用标记进行选择,但我无法检索位置的正确值。我想我必须以某种方式改变积分......也许有人可以帮助我?
以下是代码的简化版本:
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值?
添
答案 0 :(得分:0)
鼠标事件参数为您提供LocationF属性。它反映了视口(2D)坐标系中的鼠标位置。 ILNumerics中的视口由ILCamera建立。因此,我们将鼠标位置放在父摄像机节点的坐标系中。
为了将鼠标位置转换为绘图立方体的坐标系,必须累积从摄像机到绘图立方体节点的变换矩阵。生成的变换矩阵将任何鼠标位置转换为绘图立方体坐标系。
SO上有一个类似的问题:How to find the 3D coordinates of a surface from the click location of the mouse on the ILNumerics surface plots? 鼠标点击位置的三维坐标/ 17681163#17681163