У меня есть приложение C++, которое использует VTK, я хочу иметь vtkRenderWindow и поместить его в проект C# WPF без использования оболочки C#.VTK Render in C#
0
A
ответ
1
Основная идея этого установить HWND в качестве родителя vtkRenderWindow
Вот как это сделать: C++ класс:
class MyRender
{
//attributes
....
MyRender(HWND parent)
{
renderer = vtkSmartPointer<vtkRenderer>::New();
_render = vtkSmartPointer<vtkRenderWindow>::New();
_render->AddRenderer(renderer);
interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
interactor->SetRenderWindow(_render);
//setting background
renderer->SetBackground(0.1, 0.2, 0.4);
_render->SetParentId(parent);
}
void Render()
{
interactor->Initialize();
_render->Render();
}
//...more methods
}
Создать класс CLR, чтобы обернуть C++ класс в таком виде:
class RenderWindows_CLR
{
//attributes
MyRender* renderWindow;
RenderWindows_CLR::RenderWindows_CLR::RenderWindows_CLR(IntPtr parent)
{
renderWindow = new MyRender((HWND)parent.ToPointer());
}
void RenderWindows_CLR::RenderWindows_CLR::Render(IntPtr parent)
{
renderWindow->Render();
}
}
Как использовать его из C#: Вот как поставить на место Windows, панели Forms:
window = new RenderWindows_CLR.RenderWindows_CLR(this.panel.Handle);
window.Render()
Вот как поставить на WPF:
HwndSource source = (HwndSource)HwndSource.FromVisual(this);
IntPtr hWnd = source.Handle;
window = new RenderWindows_CLR.RenderWindows_CLR(hWnd);
Чтобы удалить строку заголовка, просто добавьте в DLL этой C++ (после того, как будет создано окно визуализации):
HWND window = (HWND)_render->GetGenericWindowId();
LONG style = GetWindowLong(window, GWL_STYLE) & ~(WS_BORDER | WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(window,-16L, style);
Надеюсь, что эта помощь.
Смежные вопросы
- 1. Activiz (C#) VTK vs Python VTK render quality
- 2. Render partial in railway.js
- 3. Render VML to bitmap in C#
- 4. Ember.js render in view
- 5. Render cells in engine
- 6. Render table in showoff
- 7. xml render in html
- 8. Render theme in mapsforge
- 9. Render model in view
- 10. Render node in Neos
- 11. render issue in reactjs
- 12. Render JSON in Rails
- 13. Render table in angularjs
- 14. Datatable not render in shiny
- 15. Render partial in normal page
- 16. Rails Render Partial in Helper
- 17. Render images in datatables in shiny
- 18. Render Sub View In View in Backbone
- 19. Render event in if in forloop
- 20. Как остановить VTK Timer
- 21. Ошибки VtkOpenGLRenderer после миграции из vtk 5.3 в vtk 6.2
- 22. Render Razor in Html.Raw() (MVC3)
- 23. Страница Render Time in MVC
- 24. Render vs Write in System.Web.UI.HtmlTextWriter
- 25. Router.go() page render in Meteor
- 26. Render adonis view in React
- 27. Flot not render in Django
- 28. Looping in Render() функция ReactJS
- 29. Render graphs in response-native
- 30. Render to Texture in opengl