ILNumerics鼠标事件

时间:2013-10-21 13:26:00

标签: mouseevent ilnumerics

我的鼠标事件有问题!

我订阅了MouseEnter和MouseLeave事件。 如果我的鼠标光标示例位于面板的确切中心,则会触发MouseEnter和MouseLeave事件,为什么?

我的目标是感知,从鼠标光标位于3D PlotCube上开始,何时不是。

代码:

scene.MouseEnter += ILSurface_MouseEnter;
scene.MouseLeave += ILSurface_MouseLeave;

1 个答案:

答案 0 :(得分:0)

绘图立方体捕获其ScreenRect矩形的整个区域的事件。在标准设置中,此矩形设置为(0,0,1,1),填充整个面板。因此,除非您的面板上有多个绘图立方体/相机,否则鼠标基本上总是位于绘图立方体上。

为了显示MouseEnter和MouseLeave事件的功能,我将发布一个示例,该示例作用于情节立方体中。当鼠标进入绘图时,它会在表单的标题栏中写入“On Plot”。鼠标离开绘图后立即写入“Off Plot”。

从新面板开始,然后设置ILNumerics,如下所示:http://ilnumerics.net/visualization-api-quick-start-guide.html

将ILPanel拖到form1上并双击它以切换到自动生成的ilPanel1_Load事件处理程序的代码。使用以下代码替换处理程序:

private void ilPanel1_Load(object sender, EventArgs e) {

    var surfPlot = new ILSurface(ILMath.tosingle(ILSpecialData.sincf(50, 40))) {
        Colormap = Colormaps.Prism
    }; 

    var pc = ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
        surfPlot
    });

    surfPlot.MouseEnter += (_s, _a) => {
        if (!_a.DirectionUp)
            Text = "On Plot - Target: " + _a.Target.ToString();
    };
    surfPlot.MouseLeave += (_s, _a) => {
        if (!_a.DirectionUp)
            Text = "Off Plot - Target: " + _a.Target.ToString();
    };
}

这会产生类似于下图的结果: Hadling Mouse Enter and Mouse Leave in ILNumerics

如果鼠标在情节上,表单的标题现在反映出来。请注意,无论曲线的旋转/形状如何,这都有效。有关ILNumerics中鼠标事件处理的完整文档,请访问:http://ilnumerics.net/mouse-events.html