2013-07-23 2 views
1

В настоящее время я использую объект ILPlotCube для отображения поверхности, которая генерируется из пользовательских данных, и я создал контекстное меню и добавил параметры, чтобы изменить некоторые параметры графика, такие как colourmap, lighting и т. д. Проблема, с которой я сталкиваюсь, заключается в том, чтобы автоматически обновлять графику сюжета после изменения; поскольку это единственный способ обновить добавленные огни или изменить colourmap, вызывая одно из многих событий мыши на объекте plot. Я просматривал классы ILPlotCube, ILSurface и ILScene и не могу найти никаких функций, которые могли бы это сделать (изначально я думал, что метод Reset() класса ILPlotCube будет делать то, что требуется, но на самом деле это не так). У кого-нибудь есть дополнительная информация об обновлении графики и, возможно, в потенциальном решении?Обновление поверхностной графики ILNumerics

+0

Ой, и я использую ILNumerics 3.2.0 и C# в проекте WPF в Visual Studio 2012 – Ash

+0

Могли вы отправляете какой-то код, пожалуйста? –

+0

http://pastebin.com/nYqUv66C http://pastebin.com/9U5Pb033 @HaymoKutschbach здесь два метода, которые должны обновить график после изменения конкретной настройки. Оба метода вызываются из обработчиков событий Mouse, и оба только обновляют изменения, сделанные, когда я наводил курсор на график, поворачивал его, увеличивал и т. Д. – 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 появляется контекстное меню, выбор в элементе контекстного меню вызывает событие System mouse. Однако эта проблема была решена путем простого вызова Refresh() на хосте ILPanel. – Ash