C# 如何关闭ILNumerics PlotCube中的默认鼠标事件处理程序?

C# 如何关闭ILNumerics PlotCube中的默认鼠标事件处理程序?,c#,plot,ilnumerics,C#,Plot,Ilnumerics,我正在使用ILNumerics数学库创建一些2D绘图。要显示数据,我使用ILPlotCube类。我想为MouseDoubleClick事件关闭EventHandler的默认行为,因为我想实现我自己的行为。可能吗 这里有更多的上下文: 用于MouseDoubleClick事件的ILPlotCube的默认事件处理程序会将视图重置为默认值。通常情况下,这种方法效果很好,但对于非常小的x和y值,似乎存在一个问题。当我添加一个y值非常小的线形图时,该图的极限会自动设置为YMax=0.525和YMin=-0

我正在使用ILNumerics数学库创建一些2D绘图。要显示数据,我使用ILPlotCube类。我想为MouseDoubleClick事件关闭EventHandler的默认行为,因为我想实现我自己的行为。可能吗

这里有更多的上下文:

用于MouseDoubleClick事件的ILPlotCube的默认事件处理程序会将视图重置为默认值。通常情况下,这种方法效果很好,但对于非常小的x和y值,似乎存在一个问题。当我添加一个y值非常小的线形图时,该图的极限会自动设置为YMax=0.525和YMin=-0.525。不幸的是,这不是我想要的。因此,我在添加线图后自己设置值,并且该图看起来正是我想要的。伟大的但是:如果我双击场景,它会再次使用默认值(0.525)。面团这就是我想关闭或覆盖此行为的原因

有什么想法吗

   private void ilPanel1_Load(object sender, EventArgs e)
    {
        var scene = new ILScene();
        //data with very small "y-values"
        ILArray<float> line1 = new float[,] { 
                    {0.0f,  1.0f, 2.0f }, 
                    {2.042166e-08f,  2.070141e-08f , 2.042166e-08f} };

        var linePlot1 = new ILLinePlot(line1.T,
           lineColor: Color.Blue,
           lineWidth: 3,
           markerStyle: MarkerStyle.Dot);
        //Create Plot Cube
        var plotCube = new ILPlotCube();

        plotCube.Add(linePlot1);
        //plotCube.Plots.Limits.YMax is now 0.525
        //plotCube.Plots.Limits.YMin is now -0.525

        //manually set the value
        float maxY = 0.0f;
        using (ILScope.Enter())
        {
            var aPos = linePlot1.Line.Positions.Storage["1;:"];
            maxY = ILMath.max(aPos).FirstOrDefault();
        }

        plotCube.Plots.Limits.YMax = maxY;
        plotCube.Plots.Limits.YMin = 0.0f;
        var plot = scene.Add(plotCube);

        ilPanel1.Scene = scene;
    }
private void ilPanel1\u加载(对象发送方,事件参数e)
{
var scene=new ILScene();
//“y值”非常小的数据
ILArray line1=新浮点[,]{
{0.0f,1.0f,2.0f},
{2.042166e-08f,2.070141e-08f,2.042166e-08f};
var linePlot1=新的ILLinePlot(line1.T,
线条颜色:颜色。蓝色,
线宽:3,
markerStyle:markerStyle.Dot);
//创建绘图多维数据集
var plotCube=new ILPlotCube();
plotCube.Add(linePlot1);
//plotCube.Plots.Limits.YMax现在为0.525
//plotCube.Plots.Limits.YMin现在为-0.525
//手动设置该值
浮动最大值=0.0f;
使用(ILScope.Enter())
{
var aPos=linePlot1.Line.Positions.Storage[“1;:”];
maxY=ILMath.max(aPos.FirstOrDefault();
}
plotCube.Plots.Limits.YMax=maxY;
plotCube.Plots.Limits.YMin=0.0f;
var plot=scene.Add(plotCube);
ilPanel1.场景=场景;
}
谢谢


Tim

ILNumerics中的所有节点都提供对常用鼠标处理程序的访问,您可以使用这些处理程序来提供自己的逻辑,或者简单地禁用现有的单个处理程序。在您的情况下,可以覆盖打印多维数据集的双击处理程序:

// ....

plotCube.MouseDoubleClick += (_e, _a) => {
    _a.Cancel = true; 
};
// you may want disable zoom and pan as well? 
plot.AllowZoom = false;
plot.AllowPan = false; 

// continue with your code here...
ilPanel1.Scene = scene;
ILNumerics中的鼠标处理程序实际上非常灵活和强大。请参阅此处的文档:


@编辑:根据您的情况,该属性可能也会引起您的兴趣。它确定在向绘图多维数据集添加新绘图后是否重新计算绘图多维数据集限制。您可能会发现
false
更方便

ILNumerics中的所有节点都提供了对通用鼠标处理程序的访问,您可以使用这些处理程序来提供自己的逻辑,或者简单地禁用现有的单个处理程序。在您的情况下,可以覆盖打印多维数据集的双击处理程序:

// ....

plotCube.MouseDoubleClick += (_e, _a) => {
    _a.Cancel = true; 
};
// you may want disable zoom and pan as well? 
plot.AllowZoom = false;
plot.AllowPan = false; 

// continue with your code here...
ilPanel1.Scene = scene;
ILNumerics中的鼠标处理程序实际上非常灵活和强大。请参阅此处的文档:


@编辑:根据您的情况,该属性可能也会引起您的兴趣。它确定在向绘图多维数据集添加新绘图后是否重新计算绘图多维数据集限制。您可能会发现
false
更方便

正是我要找的!谢谢!正是我要找的!谢谢!