C++中VTK9.3.0刻度标签重叠的问题记录

 更新时间:2024年06月04日 11:39:21   作者:csdndenglu  
这篇文章主要介绍了C++中VTK9.3.0刻度标签重叠的问题,本文采用VTK9.3.0版本,其他版本如VKT8.0亦有同样的问题,需要的朋友可以参考下

本文采用VTK9.3.0版本,其他版本如VKT8.0亦有同样的问题

VTK显示文本时,Z轴刻度标签出现了重叠,如下图:

寻找好久,没有找到设置标签间距、个数等相关的公有成员函数,此问题一直没有解决。

于是想到改VKT9.3.0源码,解决此问题。下面大概记录涉及到的源码文件和相关函数:

1、找到相关文件

VS2017打开源码后,与此相关的文件为:vtkCubeAxesActor.h、vtkCubeAxesActor.cxx,如下图:

2、.h中增加私有成员变量

  //whl2024-06-03
  bool m_XAxisFlag, m_YAxisFlag, m_ZAxisFlag;//标识是否修改刻度区间的个数
  int m_XMajorNum, m_YMajorNum, m_ZMajorNum;//标识设置刻度区间的个数,例如2表示2个区间3个刻度

3、构造函数中队成员变量初始化

  //whl
  m_XAxisFlag = false;
  m_YAxisFlag = false;
  m_ZAxisFlag = false;

4、增加公有成员函数,进行是否自定义修改刻度区间的设置

.h中

  //whl设置某个轴划分刻度区间的个数,可防止轴刻度文本重叠:nAxis轴号,bFlag设置/取消设置的标志,nMajorNum划分区间的个数
  void SetAxisMajorNum(int nAxis, bool bFlag, int nMajorNum = 2);

.cpp中

//------------------------------------------------------------------------------
void vtkCubeAxesActor::SetAxisMajorNum(int nAxis, bool bFlag, int nMajorNum)
{
  switch (nAxis)
  {
    case 0:
      m_XAxisFlag = bFlag;
	  m_XMajorNum = nMajorNum;
      break;
    case 1:
      m_YAxisFlag = bFlag;
	  m_YMajorNum = nMajorNum;
      break;
    case 2:
      m_ZAxisFlag = bFlag;
	  m_ZMajorNum = nMajorNum;
      break;
  }
}

5、最重要的地方,在AdjustTicksComputeRange()函数中修改增加:

    //whl判断是否自定义刻度区间
	if (m_XAxisFlag && 0==axis)
	{
		major = range / m_XMajorNum;
	}
	if (m_YAxisFlag && 1==axis)
	{
		major = range / m_YMajorNum;
	}
	if (m_ZAxisFlag && 2==axis)
	{
		major = range / m_ZMajorNum;
	}

6、使用时,在调用VTK轴相关的地方(代码中还增加了Z轴标签旋转90°,效果更好)

    //设置某个轴划分区间的个数,可防止轴刻度文本重叠:nAxis轴号,bFlag设置/取消设置的标志,nMajorNum划分区间的个数
    m_cubeAxesActor->SetAxisMajorNum(2, true, 2);//设置Z轴
    m_cubeAxesActor->GetLabelTextProperty(2)->SetOrientation(90);//Z轴标签旋转90°

7、最终结果:

到此这篇关于VTK9.3.0刻度标签重叠的问题的文章就介绍到这了,更多相关VTK刻度标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c++和python实现顺序查找实例

    c++和python实现顺序查找实例

    这篇文章主要介绍了c++和python实现顺序查找实例,流程即将目标数值和数据库中的每个数值进行比较,如果相同则搜索完成,如果不同则继续比较下一处,下面来看看具体的实例操作吧,需要的朋友可以参考一下
    2022-03-03
  • C++ auto关键字的小知识点分享

    C++ auto关键字的小知识点分享

    这篇文章主要是来和大家介绍一些C++中的小知识点,本文将从auto关键字开始讲起,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-05-05
  • C#开源类库SimpleTCP使用方法

    C#开源类库SimpleTCP使用方法

    SimpleTCP内部有一个特殊字符分割字符串的协议可以直接使用,也可以在DataReceived事件处理程序中实现自己的协议,这篇文章主要介绍了C#开源类库SimpleTCP的使用方法,需要的朋友可以参考下
    2021-09-09
  • C++中的各种容器的使用方法汇总

    C++中的各种容器的使用方法汇总

    这篇文章主要介绍了C++中的各种容器的使用方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • C++对象模型和this指针详解

    C++对象模型和this指针详解

    这篇文章主要介绍了详解C++对象模型和this指针,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • 链接库动态链接库详细介绍

    链接库动态链接库详细介绍

    静态链接库.lib和动态链接库.dll。其中动态链接库在被使用的时候,通常还提供一个.lib,称为引入库,它主要提供被Dll导出的函数和符号名称,使得链接的时候能够找到dll中对应的函数映射
    2012-11-11
  • 关于C++中定义比较函数的三种方法小结

    关于C++中定义比较函数的三种方法小结

    下面小编就为大家带来一篇关于C++中定义比较函数的三种方法小结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 从汇编看c++中默认构造函数的使用分析

    从汇编看c++中默认构造函数的使用分析

    c++中,如果为一个类没有明确定义一个构造函数,那么,编译器就会自动合成一个默认的构造函数。下面,通过汇编程序,来看一下其真实情况
    2013-05-05
  • C++特殊成员详解

    C++特殊成员详解

    这篇文章主要为大家介绍了C++特殊成员,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
    2021-11-11
  • C语言深入讲解宏的定义与使用方法

    C语言深入讲解宏的定义与使用方法

    在 C 语言中,可以采用命令 #define 来定义宏。该命令允许把一个名称指定成任何所需的文本,例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉
    2022-04-04

最新评论