/********************************************************************** 文件名: 5.2_ImageBlendExample.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include //测试图像:../data/lena-gray.jpg int main(int argc, char* argv[]) { if (argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName ( argv[1] ); reader->Update(); vtkSmartPointer imageSource = vtkSmartPointer::New(); imageSource->SetNumberOfScalarComponents(1); imageSource->SetScalarTypeToUnsignedChar(); imageSource->SetExtent(0, 512, 0, 512, 0, 0); imageSource->SetDrawColor(0.0); imageSource->FillBox(0, 512, 0, 512); imageSource->SetDrawColor(255.0); imageSource->FillBox(100,400,100,400); imageSource->Update(); vtkSmartPointer imageBlend = vtkSmartPointer::New(); imageBlend->SetInput(0, reader->GetOutput()); imageBlend->SetInput(1, imageSource->GetOutput()); imageBlend->SetOpacity(0, 0.4); imageBlend->SetOpacity(1, 0.6); imageBlend->Update(); // Create actors vtkSmartPointer originalActor1 = vtkSmartPointer::New(); originalActor1->SetInput(reader->GetOutput()); vtkSmartPointer originalActor2 = vtkSmartPointer::New(); originalActor2->SetInput(imageSource->GetOutput()); vtkSmartPointer blendActor = vtkSmartPointer::New(); blendActor->SetInput(imageBlend->GetOutput()); // Define viewport ranges // (xmin, ymin, xmax, ymax) double leftViewport[4] = {0.0, 0.0, 0.33, 1.0}; double midViewport[4] = {0.33, 0.0, 0.66, 1.0}; double rightViewport[4] = {0.66, 0.0, 1.0, 1.0}; // Setup renderers vtkSmartPointer originalRenderer1 = vtkSmartPointer::New(); originalRenderer1->SetViewport(leftViewport); originalRenderer1->AddActor(originalActor1); originalRenderer1->ResetCamera(); originalRenderer1->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer originalRenderer2 = vtkSmartPointer::New(); originalRenderer2->SetViewport(midViewport); originalRenderer2->AddActor(originalActor2); originalRenderer2->ResetCamera(); originalRenderer2->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer blendRenderer = vtkSmartPointer::New(); blendRenderer->SetViewport(rightViewport); blendRenderer->AddActor(blendActor); blendRenderer->ResetCamera(); blendRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(originalRenderer1); renderWindow->AddRenderer(originalRenderer2); renderWindow->AddRenderer(blendRenderer); renderWindow->SetSize( 640, 320 ); renderWindow->Render(); renderWindow->SetWindowName("ImageBlendExample"); vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); vtkSmartPointer style = vtkSmartPointer::New(); renderWindowInteractor->SetInteractorStyle(style); renderWindowInteractor->SetRenderWindow(renderWindow); renderWindowInteractor->Initialize(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }