VTK Render into C#
VTK Render into C#
我有一个使用VTK的c++应用程序,我想要vtkRenderWindow并将其放入c# WPF项目中,而不使用c#包装器
这样做的主要思想是将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窗体面板的位置:
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);
要删除标题栏,只需在c++ DLL中添加以下内容(在创建渲染窗口之后):
HWND window = (HWND)_render->GetGenericWindowId();
LONG style = GetWindowLong(window, GWL_STYLE) & ~(WS_BORDER | WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(window,-16L, style);
相关文章:
- 如何在C++中设置演员的"Render Custom Depth Pass"和"Depth Stencil Value"?
- Old C++ DLLs into C#
- glDisable(GL_DEPTH_TEST) makes nothing but Sky-Sphere Render
- std::move into static_pointer_cast:为什么static_pointer_cast没有右值引用重载?
- Render to QOpenGLFramebufferObject GL_HALF_FLOAT
- boost::spirit::qi::phrase_parser() into std::map error
- Memcpy uint32_t into char*
- std::vector<char> into std::vector<T> conversion c++
- Render an IDirect3DSurface9 from DXVA2?
- Importing libssh into Qt
- "scoping into"类的头文件是否C++创建它的实例?
- protobuf-net into .proto 会产生枚举冲突
- C++ fread() into a std::string
- 第 13 "Jumping into C++" 章测验 3 的正确答案?
- std::bad_alloc when inserting into std::unordered_map?
- Taking into account
- C++ LogFont Embed Into XPS
- 文件系统项目"Member access into incomplete type"错误
- RTSP Stream into OpenCV
- VTK Render into C#