我对鼠标事件有意见!
我订阅了活动MouseEnter和MouseLeave。如果我的鼠标光标示例位于面板的正中,那么MouseEnter和MouseLeave事件就会触发,为什么?
我的目标是感知,从鼠标光标什么时候在3D PlotCube上开始,什么时候没有。
代码:
scene.MouseEnter += ILSurface_MouseEnter;
scene.MouseLeave += ILSurface_MouseLeave;发布于 2013-10-21 14:59:48
一个绘图立方体捕获其ScreenRect矩形的整个区域的事件。在标准设置中,此矩形设置为(0,0,1,1),填充整个面板。所以,除非你在你的面板上有多个立方体/摄像头,否则鼠标基本上总是在立方体上。
不过,为了显示MouseEnter和MouseLeave事件的功能,我将发布一个示例,该示例将用于绘图立方体中的一个绘图。当鼠标输入绘图时,它会在窗体的标题栏中写入"On绘图“。鼠标一离开情节,就写上“停止情节”。
从一个新的面板开始,并安装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();
};
}这将产生类似于以下图像的结果:

窗体的标题现在反映,如果鼠标是否在情节上。请注意,无论图形的旋转/形状如何,这都是有效的。在ILNumerics中鼠标事件处理的完整文档可以在这里找到:http://ilnumerics.net/mouse-events.html
https://stackoverflow.com/questions/19495826
复制相似问题