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语言小游戏程序之弹跳小球的实现代码

    c语言小游戏程序之弹跳小球的实现代码

    这篇文章主要介绍了c语言小游戏程序之弹跳小球的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • C++动态规划算法实现矩阵链乘法

    C++动态规划算法实现矩阵链乘法

    动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解
    2022-06-06
  • C语言实现恶作剧关机程序

    C语言实现恶作剧关机程序

    大家好,本篇文章主要讲的是C语言实现恶作剧关机程序,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • c语言处理函数调用的方法

    c语言处理函数调用的方法

    函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。这篇文章主要介绍了c语言是如何处理函数调用的?需要的朋友可以参考下
    2021-11-11
  • 详解QListWidget如何实现自定义Item效果

    详解QListWidget如何实现自定义Item效果

    这篇文章主要为大家介绍了如何通过QListWidget实现自定义Item效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-04-04
  • C/C++数据对齐详细解析

    C/C++数据对齐详细解析

    通常我们在写代码的时候是不需要考虑对齐的影响的,都是依赖编译器来为我们选择适合的对齐策略,我们也可以通过传递给编译器预编译指令来指定数据对齐的方法
    2013-10-10
  • C语言代码实现简单的扫雷小游戏

    C语言代码实现简单的扫雷小游戏

    这篇文章主要为大家详细介绍了C语言代码实现简单的扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • C/C++ Qt 基本文件读写的基本使用(2种实现)

    C/C++ Qt 基本文件读写的基本使用(2种实现)

    文件的读写是很多应用程序具有的功能,本文主要介绍了两种实现方法,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写
    2021-11-11
  • 用VC++6.0的控制台实现2048小游戏的程序

    用VC++6.0的控制台实现2048小游戏的程序

    本文是作者拜读刘地同学的《C语言控制台版2048》之后感觉非常不错,添加了注释之后分享给大家的,方便更多的初学者阅读学习,有需要的小伙伴参考下。
    2015-03-03
  • c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

    c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

    vector是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器,本文介绍一下使用方法
    2013-12-12

最新评论