1、添加显示控件
前台界面
<WindowsFormsHost x:Name="windowHost" Grid.Row="1"/>
构造函数中添加。
private RenderWindowControl renderWindowControl = new RenderWindowControl();
public MainWindow()
{
InitializeComponent();
windowHost.Child = renderWindowControl;
// dd.Dock = DockStyle.Fill;
// renderWindowControl.Load += renderWindowControl_Load;
}
2、编写代码
显示一个圆柱体。
工作的基本流程是“数据源Souce”--“过滤器Filter”-- “制图器Mapper”-- “角色Actor”--“渲染器Renderer”。
2.1、数据源Souce
vtkCylinderSource 派生自 vtkPolyDataAlgorithm 它生成的数据类型是 vtkPolyData,
主要是生成一个中心在渲染场景原点的柱体,柱体的长轴沿着Y轴,柱体的高度、截面半径等都可以任意指定。
2.2、过滤器Filter
vtkPolyDataMapper 渲染多边形几何数据(vtkPolyData),派生自 vtkMapper,将输入的数据转换为几何图元(点、线、多边形)进行渲染。
2.3、角色Actor
vtkActor 派生自 vtkProp3D类,渲染场景中数据的可视化表达 负责确定渲染场景中对象的位置、大小和方向等信息。
依赖于两个对象:
- 、Mapper(vtkMapper)对象,负责存放数据和渲染的信息。
- 、属性(vtkProperty)对象,负责控制颜色、不透明度等参数。
另外 vtkActor中还可以设置纹理(vtkTexture)对象,用于纹理贴图。
2.4、渲染器Renderer
vtkRenderer 负责管理场景的渲染过程。
组成场景的包括Prop、照相机(vtkCamera)和光照(vtkLight)都被融合到一个vtkRender对象中。
2.5、 vtkRenderWindow
将操作系统与VTk渲染引擎连接到一起。可以有多个vtkRenderer对象,这些vtkRenderer可以渲染在窗口不同的矩形区域中或者覆盖整个窗口区域。
private void RenderCylinder()
{
vtkCylinderSource cylinderSource = vtkCylinderSource.New();
cylinderSource.SetHeight(3.0); //设置高
cylinderSource.SetRadius(1.0); // 设置半径
cylinderSource.SetResolution(100); //设置横截面的等边多边形的边数。
vtkPolyDataMapper polyDataMapper = vtkPolyDataMapper.New();
//VTK可视化管线的输入数据接口,对应的可视化管线的输出数据接口为GetOutputPort().
polyDataMapper.SetInputConnection(cylinderSource.GetOutputPort());
vtkActor actor = vtkActor.New();
actor.SetMapper(polyDataMapper); //用于设置生成几何图元的Mapper,即连接一个Actor到可视化管理的末端。
vtkRenderer renderer = vtkRenderer.New();
renderer.AddActor(actor); //将vtkProp类型的对象添加到渲染场景中。
renderer.SetBackground(0.3, 0.6, 0.7); //设置渲染场景的背景颜色,用RGB的格式设置。还有其它函数可以设置渐变效果。
vtkRenderWindow renWin = renderWindowControl.RenderWindow;
renWin.AddRenderer(renderer); // 添加渲染器
renWin.Render();
}