1

我是一名学生,刚刚开始编程并尝试 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...
        }

谢谢

4

1 回答 1

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():

private void button1_Click(object sender, EventArgs e) {
    ilPanel_3D.Scene.First<ILSurface>().Colormap = Colormaps.Summer;
    ilPanel_3D.Scene.Configure();
    ilPanel_3D.Refresh(); 
}
于 2013-10-29T17:33:31.783 回答