2013-07-23 56 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