先上代码:
onDisplayColorMprPixel(vtkImageViewer2* imageViewer, vtkImagePlaneWidget* imagePlane,int slicerIndex)
{
vtkSmartPointer<vtkImageViewer2> viewerLayer = vtkSmartPointer<vtkImageViewer2>::New();
//viewerLayer->SetRenderWindow(imageViewer->GetRenderWindow());//加上以后就没有叠加的效果了
viewerLayer->SetInputData(m_pHessianImageData);
if (m_nIndex == 1)
viewerLayer->SetSliceOrientationToXY();
else if (m_nIndex == 2)
viewerLayer->SetSliceOrientationToYZ();
else if (m_nIndex == 3)
viewerLayer->SetSliceOrientationToXZ();
viewerLayer->GetRenderWindow()->SetShowWindow(false);
viewerLayer->SetSlice(slicerIndex);//到此出为止会出现弹窗
viewerLayer->GetImageActor()->SetInterpolate(false);
viewerLayer->GetImageActor()->GetProperty()->SetLookupTable(pColorTable);
viewerLayer->GetImageActor()->SetOpacity(0.5);
viewerLayer->GetImageActor()->GetProperty()->SetDiffuse(0.0);
viewerLayer->GetImageActor()->SetPickable(false);
vtkImageActor* actor = viewerLayer->GetImageActor();
vtkRenderer* renderer = imageViewer->GetRenderer();
renderer->AddActor(actor);
renderer->AddActor(imageViewer->GetImageActor());
vtkRenderWindow* rw = imageViewer->GetRenderWindow();
rw->AddRenderer(renderer);
rw->Render();
}
imageViewer是原本显示切片的视图,viewerLayer是叠加在原切面上的视图。 slicerIndex是第几个切面, pColorTable是颜色表。
效果:
明显在白色上面叠加了红色。
问题:总是会创建新窗口,然后闪现一下,如果把上面的注释放开,倒是不会出现新窗口,但是又没有叠加效果,只显示红色标签。不知道大家有什么建议。看了网上的一些东西,还是不一样,我这个要不停滚动,不停显示每个切片。而且要显示叠加效果。有红有白。
大家有没有解决办法?