2013-07-23 36 views
1

我正在使用ILPlotCube对象来显示从用户数据生成的表面,并且我创建了一个上下文菜单并添加了一些选项来更改一些绘图设置,例如colourmap,lighting等等。我遇到的问题是一旦进行更改,就会自动更新绘图的图形;因为它可以更新添加的灯光或更改色彩映射,只需调用剧情对象上的许多鼠标事件之一即可。我已经通过ILPlotCube,ILSurface和ILScene类进行了搜索,并找不到任何似乎这样做的功能(我最初认为ILPlotCube类的Reset()方法可以完成所需的功能,但实际上并没有这样做)。有没有人有关于图形更新和可能的解决方案的更多信息?更新ILNumerics表面图形

+0

哦,我使用ILNumerics 3.2.0和C#的WPF项目在Visual Studio 2012 – Ash

+0

莫非你需要张贴一些代码吗? –

+0

http://pastebin.com/nYqUv66C http://pastebin.com/9U5Pb033 @HaymoKutschbach这里有两种方法可以在更改特定设置后更新绘图。这两种方法都是从鼠标事件处理程序中调用的,并且两者都只更新当我将光标放在绘图上,旋转它,缩放等时所做的更改。 – Ash

回答

1

ILNumerics节点上的鼠标事件提供了ILMouseEventArgs的参数。该类型提供Refresh属性。在鼠标事件处理程序中将其设置为true。这将触发所有事件被处理后重绘:

void iILNode_MouseClick(object sender, ILMouseEventArgs e) { 
    if (e.DirectionUp) { 
     //modify scene here 
     // .. 
     // trigger redraw of the scene 
     e.Refresh = true; 
    } 
} 

鼠标事件处理的文档:http://ilnumerics.net/mouse-events.html

+0

但是,这并没有完全解决事件设置方式的原因向上;最初的ILMouseEvent调出一个上下文菜单,上下文菜单项上的选择调用一个系统鼠标事件。但是,通过简单地调用ILPanel主机上的Refresh()可以解决此问题。 – Ash