【问题标题】:Updating of the ILNumerics surface graphics更新 ILNumerics 表面图形
【发布时间】:2013-07-24 16:24:45
【问题描述】:

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

【问题讨论】:

  • 哦,我在 Visual Studio 2012 的 WPF 项目中使用 ILNumerics 3.2.0 和 C#
  • 你能发布一些代码吗?
  • pastebin.com/nYqUv66C pastebin.com/9U5Pb033 @HaymoKutschbach 这里有两种方法可以在更改特定设置后更新绘图。这两种方法都是从鼠标事件处理程序中调用的,并且都只更新当我在绘图上运行光标、旋转它、缩放等时所做的更改。

标签: ilnumerics


【解决方案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

【讨论】:

  • 谢谢,但是由于事件的设置方式,这并没有完全解决;初始 ILMouseEvent 会调出上下文菜单,上下文菜单项上的选择会调用系统鼠标事件。然而这个问题已经通过在 ILPanel 主机上调用 Refresh() 解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 2012-10-01
相关资源
最近更新 更多