一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 580万
复制代码
  1 #include "vtkAutoInit.h" 
  2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
  3 VTK_MODULE_INIT(vtkInteractionStyle);
  4 
  5 #include <vtkSmartPointer.h>
  6 #include <vtkMath.h>
  7 #include <vtkImageData.h>
  8 #include <vtkImageCanvasSource2D.h>
  9 #include <vtkImageLogic.h>
 10 #include <vtkRenderWindow.h>
 11 #include <vtkRenderWindowInteractor.h>
 12 #include <vtkInteractorStyleImage.h>
 13 #include <vtkRenderer.h>
 14 #include <vtkImageActor.h>
 15 
 16 int main(int, char *[])
 17 {
 18     vtkSmartPointer<vtkImageCanvasSource2D> imageSource1 =
 19         vtkSmartPointer<vtkImageCanvasSource2D>::New();
 20     imageSource1->SetScalarTypeToUnsignedChar();
 21     imageSource1->SetNumberOfScalarComponents(1);
 22     imageSource1->SetExtent(0, 100, 0, 100, 0, 0);
 23     imageSource1->SetDrawColor(0.0);
 24     imageSource1->FillBox(0,100,0,100);
 25     imageSource1->SetDrawColor(255);
 26     imageSource1->FillBox(20,60,20,60);
 27     imageSource1->Update();
 28 
 29     vtkSmartPointer<vtkImageCanvasSource2D> imageSource2 = 
 30         vtkSmartPointer<vtkImageCanvasSource2D>::New();
 31     imageSource2->SetNumberOfScalarComponents(1);
 32     imageSource2->SetScalarTypeToUnsignedChar();
 33     imageSource2->SetExtent(0, 100, 0, 100, 0, 0);
 34     imageSource2->SetDrawColor(0.0);
 35     imageSource2->FillBox(0,100,0,100);
 36     imageSource2->SetDrawColor(255.0);
 37     imageSource2->FillBox(40,80,40,80);
 38     imageSource2->Update();
 39 
 40     vtkSmartPointer<vtkImageLogic> imageLogic = 
 41         vtkSmartPointer<vtkImageLogic>::New();
 42     imageLogic->SetInputData(imageSource1->GetOutput());
 43     imageLogic->SetInputData(imageSource2->GetOutput());
 44     imageLogic->SetOperationToXor();
 45     imageLogic->SetOutputTrueValue(128);
 46     imageLogic->Update();
 47 
 48     vtkSmartPointer<vtkImageActor> originalActor1 =
 49         vtkSmartPointer<vtkImageActor>::New();
 50     originalActor1->SetInputData(imageSource1->GetOutput());
 51 
 52     vtkSmartPointer<vtkImageActor> originalActor2 =
 53         vtkSmartPointer<vtkImageActor>::New();
 54     originalActor2->SetInputData(imageSource2->GetOutput());
 55 
 56     vtkSmartPointer<vtkImageActor> logicActor =
 57         vtkSmartPointer<vtkImageActor>::New();
 58     logicActor->SetInputData(imageLogic->GetOutput());
 59 
 60     double leftViewport[4] = {0.0, 0.0, 0.33, 1.0};
 61     double midViewport[4] = {0.33, 0.0, 0.66, 1.0};
 62     double rightViewport[4] = {0.66, 0.0, 1.0, 1.0};
 63 
 64     vtkSmartPointer<vtkRenderer> originalRenderer1 =
 65         vtkSmartPointer<vtkRenderer>::New();
 66     originalRenderer1->SetViewport(leftViewport);
 67     originalRenderer1->AddActor(originalActor1);
 68     originalRenderer1->ResetCamera();
 69     originalRenderer1->SetBackground(1.0, 1.0, 1.0);
 70 
 71     vtkSmartPointer<vtkRenderer> originalRenderer2 =
 72         vtkSmartPointer<vtkRenderer>::New();
 73     originalRenderer2->SetViewport(midViewport);
 74     originalRenderer2->AddActor(originalActor2);
 75     originalRenderer2->ResetCamera();
 76     originalRenderer2->SetBackground(0.8, 0.8, 0.8);
 77 
 78     vtkSmartPointer<vtkRenderer> logicRenderer =
 79         vtkSmartPointer<vtkRenderer>::New();
 80     logicRenderer->SetViewport(rightViewport);
 81     logicRenderer->AddActor(logicActor);
 82     logicRenderer->ResetCamera();
 83     logicRenderer->SetBackground(0.6, 0.6, 0.6);
 84 
 85     vtkSmartPointer<vtkRenderWindow> renderWindow =
 86         vtkSmartPointer<vtkRenderWindow>::New();
 87     renderWindow->AddRenderer(originalRenderer1);
 88     renderWindow->AddRenderer(originalRenderer2);
 89     renderWindow->AddRenderer(logicRenderer);
 90     renderWindow->SetSize(640, 320);
 91     renderWindow->Render();
 92     renderWindow->SetWindowName("ImageLogicExample");
 93 
 94     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
 95         vtkSmartPointer<vtkRenderWindowInteractor>::New();
 96     vtkSmartPointer<vtkInteractorStyleImage> style =
 97         vtkSmartPointer<vtkInteractorStyleImage>::New();
 98 
 99     renderWindowInteractor->SetInteractorStyle(style);
100     renderWindowInteractor->SetRenderWindow(renderWindow);
101     renderWindowInteractor->Initialize();
102     renderWindowInteractor->Start();
103 
104     return EXIT_SUCCESS;
105 }
复制代码

posted on   一杯清酒邀明月  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2022-08-15 Qt item setZValue() 函数
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示