1、代码
private void RestWindow()
{
// 1.Create a simple sphere. A pipeline is created.
// 1.新建球体,创建“管道pipeline”。
// 1.1 新建数据--“数据源Source”
// (1)球体
vtkSphereSource sphere = vtkSphereSource.New(); // 新建球
sphere.SetThetaResolution(8); // 设置球纬度参数
sphere.SetPhiResolution(16); // 设置球经度参数
sphere.SetRadius(0.5); // 设置球的半径
// (2)柱体
vtkCylinderSource cylinder = vtkCylinderSource.New();
cylinder.SetHeight(3.0);
cylinder.SetRadius(0.1);
cylinder.SetResolution(10);
// 1.2 数据加工 -- "过滤器Filter" -- 收缩
vtkShrinkPolyData shrink = vtkShrinkPolyData.New(); // 新建数据收缩操作器
shrink.SetInputConnection(cylinder.GetOutputPort()); // 连接管道
shrink.SetShrinkFactor(1); // 收缩“面”操作
// 1.3 数据制图 -- "制图器Mapper"
// (1)球体
vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New(); // 新建制图器
sphereMapper.SetInputConnection(sphere.GetOutputPort()); // 连接管道
// (2)柱体
vtkPolyDataMapper cylinderMapper = vtkPolyDataMapper.New(); // 新建制图器
cylinderMapper.SetInputConnection(shrink.GetOutputPort()); // 连接管道
// 2.The actor links the data pipeline to the rendering subsystem
// 2.创建“角色Actor”,连接“管道pipeline”和“渲染系统rendering subsystem”
// 2.1 新建角色--“角色Actor”
// (1)球体
vtkActor sphereActor = vtkActor.New(); // 新建角色
sphereActor.SetMapper(sphereMapper); // 传递制图器
sphereActor.GetProperty().SetColor(1, 0, 0); // 设置“角色”颜色[RGB]
// (2)柱体
vtkActor cylinderActor = vtkActor.New(); // 新建角色
cylinderActor.SetMapper(cylinderMapper); // 传递制图器
cylinderActor.GetProperty().SetColor(0, 1, 0); // 设置“角色”颜色[RGB]
// 2.2 Create components of the rendering subsystem
// 2.2 创建渲染--“渲染系统rendering subsystem”
// (1)新建“渲染器Renderer”和“渲染窗口RenderWindow”
// renderWindowControl1控件提供“渲染窗口”
vtkRenderer render1 = vtkRenderer.New(); // 新建渲染器
vtkRenderer render2 = vtkRenderer.New(); // 新建渲染器
vtkRenderWindow renWin = renderWindowControl.RenderWindow;
renWin.AddRenderer(render1); // 添加渲染器
renWin.AddRenderer(render2); // 添加渲染器
// Add the actors to the renderer, set the window size
// (2)将“角色Actor”添加到“渲染器Renderer”并渲染
render1.AddActor(cylinderActor);
render1.AddActor(sphereActor);
render1.SetViewport(0.0, 0.0, 0.8, 0.5); // 设置Viewport窗口
render1.SetBackground(0.0, 0.0, 1.0); // 设置背景色
render2.AddActor(cylinderActor);
render2.SetViewport(0.5, 0.5, 1.0, 1.0); // 设置Viewport窗口
render2.SetBackground(1.0, 1.0, 1.0); // 设置背景色
vtkTextActor textActor = new vtkTextActor();
textActor.GetTextProperty().SetFontSize(30); // 文字大小
textActor.SetDisplayPosition(50, 50); // 文字位置(左下角)
textActor.SetInput("ActiViz, C# VTK"); // 文字内容
textActor.GetTextProperty().SetColor(1.0, 0.0, 0.0); // 文字颜色
//textActor.GetTextProperty().SetFontFamily(0); // 字体
//textActor.GetTextProperty().SetJustification(1); // 两端对其
//textActor.GetTextProperty().SetBold(1); // 加粗
//textActor.GetTextProperty().SetItalic(1); // 斜体
//textActor.GetTextProperty().SetShadow(1); // 阴影
render1.AddActor(textActor); // 在renderer中调用
//ren1.AddViewProp(sphereActor); // 渲染器添加角色
//renWin.SetSize(500, 500); // 设置渲染窗口大小[无效语句]
renWin.Render(); // 渲染渲染窗口
// (3)设置"相机Camera"
//vtkCamera camera = render1.GetActiveCamera(); // 新建相机
//camera.Zoom(1.0); // 相机缩放
}
2、效果