プロット キューブは、その 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();
};
}
これにより、次の図のような結果が生成されます。

マウスがプロット上にあるかどうかにかかわらず、フォームのタイトルが反映されるようになりました。これは、プロットの回転/形状に関係なく機能することに注意してください。ILNumerics でのマウス イベント処理の完全なドキュメントは、 http ://ilnumerics.net/mouse-events.html にあります。