首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

vtk学习札记 - 显示label之vtkLabelPlacementMapper

2012-09-01 
vtk学习笔记 --- 显示label之vtkLabelPlacementMapper在vtk中显示标签有好几种方法,前面了解了vtkLabeledD

vtk学习笔记 --- 显示label之vtkLabelPlacementMapper

在vtk中显示标签有好几种方法,前面了解了vtkLabeledDataMapper,现在来了解下vtkLabelPlacementMapper。

?

在使用vtkLabelPlacementMapper之前,需要先使用vtkPointSetToLabelHierarchy来组织标签数据。首先来看看如何构造标签数据。

?

首先定义一个vtkStringArray来存放标签名称,同时给这个数组指定名称为labels,在后面需要使用。

?

相比于vtkLabeledDataMapper,vtkLabelPlacementMapper速度要快一些,但是当数据量上千以后,速度也会变慢,但是还可以接受。另外,vtkLabelPlacementMapper在显示标签时,标签不会相互覆盖,如果后面的标签被挡住了,会自动隐藏,这样屏幕就不会因为标签太多导致拥挤。

?

这两种标签都是2d 的,即标签始终面向屏幕,而且可以设置字体,缺点就是当显示大量标签时,速度慢,影响用户使用。

在工作的过程中,也尝试了其它的办法,比如使用vtkVectorText结合vtkFollower来显示数字和字母。vtkVectorText是采用三角面的方式来定义一个数字或者字母,一个数字零就包含了很多三角形。vtkFollower实际上就是一个vtkActor,只是它提供了一些方法可使让自身始终朝向相机,因此,可以使用这两者来显示标签,同时保持标签使用朝向屏幕。但是,因为这里的一个标签就是一个actor,当数量达到一定程度时,性能会下降,只是相比前面的两种要快点。

另外一个缺陷是vtkVectorText只定义了常用的ascii字符,即数字以及字母等字符,所以不支持汉字的显示,因此,如何快速的显示大量标签还是没有找到好的解决办法,看来只有等到vtk 6.0出来解决了。

?

?

热点排行