下面代码 win32窗口可以加载进来,但界面全是黑的,什么也不显示: BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; // 将实例句柄存储在全局变量中 hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr); if (!hWnd) { return FALSE; } vtkConeSource* cone = vtkConeSource::New(); cone->SetHeight(3.0); cone->SetRadius(1.0); cone->SetResolution(10); vtkPolyDataMapper* coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInputConnection(cone->GetOutputPort()); vtkActor* coneActor = vtkActor::New(); coneActor->SetMapper(coneMapper); vtkRenderer* ren1 = vtkRenderer::New(); ren1->AddActor(coneActor); ren1->SetBackground(0.1, 0.2, 0.4); renderWindow->AddRenderer(ren1); // renderWindow->SetSize(600, 600); vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renderWindow); vtkInteractorStyleTrackballCamera* style = vtkInteractorStyleTrackballCamera::New(); iren->SetInteractorStyle(style); vtkBoxWidget* boxWidget = vtkBoxWidget::New(); boxWidget->SetInteractor(iren); boxWidget->SetPlaceFactor(1.25); boxWidget->SetProp3D(coneActor); boxWidget->PlaceWidget(); vtkMyCallback* callback = vtkMyCallback::New(); boxWidget->AddObserver(vtkCommand::InteractionEvent, callback); boxWidget->On(); iren->Initialize(); iren->Start(); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 在Win32窗口中绘制VTK渲染窗口 renderWindow->SetWindowId(reinterpret_cast<void*>(hWnd)); renderWindow->Render(); return TRUE; }
时间: 2024-04-14 13:30:06 浏览: 100
根据您提供的代码,我注意到一些问题可能导致界面全黑,无法显示VTK渲染结果:
1. 渲染窗口(renderWindow)没有正确创建和初始化:在代码中,我没有看到您创建和初始化renderWindow对象的代码。请确保您在InitInstance函数中创建并初始化vtkWin32OpenGLRenderWindow对象,类似于以下代码:
```cpp
vtkSmartPointer<vtkWin32OpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkWin32OpenGLRenderWindow>::New();
renderWindow->SetParentId(reinterpret_cast<void*>(hWnd));
```
2. 渲染器(ren1)没有正确设置背景颜色:在渲染器中设置背景颜色非常重要,否则画面可能会全黑。请确保在创建并添加渲染器到renderWindow之后,设置正确的背景颜色,例如:
```cpp
ren1->SetBackground(0.1, 0.2, 0.4);
```
3. 渲染窗口没有调用Render方法进行渲染:在创建并设置好渲染器后,确保调用renderWindow的Render方法进行渲染,以便在Win32窗口中显示VTK渲染结果:
```cpp
renderWindow->Render();
```
请注意,在调用renderWindow的Render方法之前,确保已经正确设置了渲染器和其他VTK对象。
希望这些建议能够帮助您解决问题。如果问题仍然存在,请提供更多关于您的代码和环境的信息,以便我能够更具体地帮助您。
阅读全文