如何通过单击按钮刷新ILPanel ...?

时间:2013-10-29 15:46:50

标签: ilnumerics

我是学生,只是编程并试用ILNumerics。 这是我的问题: 如何在更改色彩映射或用户数据后刷新或重新绘制IlPanal? 我想通过单击按钮刷新Surfacegraph。我想答案很简单,但过去两天我尝试了很多...我是个菜鸟;)

例如:

 private void ilPanel_3D_Load(object sender, EventArgs e)
        {
            var scene = new ILScene();
            var pc = scene.Add(new ILPlotCube(twoDMode: false));
            var sf = pc.Add(new ILSurface(Z));
            ilPanel_3D.Scene = scene;
        }

 private void button1_Click(object sender, EventArgs e)
        {
           // dont know what to put in here...
        }

谢谢

1 个答案:

答案 0 :(得分:0)

对于此类交互式操作,您必须访问每个驱动程序内部维护全局场景的“同步副本”。由于许多驱动程序可能同时显示一个场景,因此该内部副本仅反映由于用户交互/修改而导致的所有更改。

private void button1_Click(object sender, EventArgs e) {
    ilPanel_3D.GetCurrentScene().First<ILSurface>().Colormap = Colormaps.Summer;
    ilPanel_3D.Refresh(); 
}
PS:下次不需要等待两天......! ;)

@ Edit2:实际上,更新在全局场景中也可以正常工作。但是为了将更改广播到ilPanel1驱动程序,您必须在修改结束时添加对Configure()的调用。可以为其中一个公共父节点上的所有已更改节点调用一次Configure。因此,您可以简单地在场景上调用Configure():

private void button1_Click(object sender, EventArgs e) {
    ilPanel_3D.Scene.First<ILSurface>().Colormap = Colormaps.Summer;
    ilPanel_3D.Scene.Configure();
    ilPanel_3D.Refresh(); 
}