实例19:用vtkImageCanvasSource2D创建图像
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkSmartPointer.h>
#include <vtkImageData.h>
#include <vtkImageCanvasSource2D.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleImage.h>
#include <vtkRenderer.h>
#include <vtkImageActor.h>
int main()
{
//定义一个vtkImageCanvasSource2D类型对象canvas
vtkSmartPointer<vtkImageCanvasSource2D> canvas =
vtkSmartPointer<vtkImageCanvasSource2D>::New();
//设置画布的像素数据类型为UnsignedChar
canvas->SetScalarTypeToUnsignedChar();
//设置组分数目
canvas->SetNumberOfScalarComponents(1);
//设置画布的大小
canvas->SetExtent(0, 100, 0, 100, 0, 0);
//利用SetDrawColor方法设置绘制矩形颜色
canvas->SetDrawColor(0, 0, 0, 0);//黑色
//利用FillBox方法在画布中绘制矩形
canvas->FillBox(0,100,0,100);
canvas->SetDrawColor(255, 0, 0, 0);//白色
canvas->FillBox(20,40,20,40);
canvas->Update();
// Create actors
vtkSmartPointer<vtkImageActor> redActor =
vtkSmartPointer<vtkImageActor>::New();
//redActor->SetInput(canvas->GetOutput());
redActor->SetInputData(canvas->GetOutput());
// Define viewport ranges
// (xmin, ymin, xmax, ymax)
double redViewport[4] = {0.0, 0.0, 1.0, 1.0};
// Setup renderers
vtkSmartPointer<vtkRenderer> redRenderer =
vtkSmartPointer<vtkRenderer>::New();
redRenderer->SetViewport(redViewport);
redRenderer->AddActor(redActor);
redRenderer->ResetCamera();
redRenderer->SetBackground(1.0, 1.0, 1.0);
// Setup render window
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(redRenderer);
renderWindow->SetSize( 640, 480 );
renderWindow->Render();
renderWindow->SetWindowName("ImageCanvasSource2D");
// Setup render window interactor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleImage> style =
vtkSmartPointer<vtkInteractorStyleImage>::New();
renderWindowInteractor->SetInteractorStyle(style);
// Render and start interaction
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
VTK系列目录: