C++中VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題記錄
本文采用VTK9.3.0版本,其他版本如VKT8.0亦有同樣的問(wèn)題
VTK顯示文本時(shí),Z軸刻度標(biāo)簽出現(xiàn)了重疊,如下圖:
尋找好久,沒(méi)有找到設(shè)置標(biāo)簽間距、個(gè)數(shù)等相關(guān)的公有成員函數(shù),此問(wèn)題一直沒(méi)有解決。
于是想到改VKT9.3.0源碼,解決此問(wèn)題。下面大概記錄涉及到的源碼文件和相關(guān)函數(shù):
1、找到相關(guān)文件
VS2017打開(kāi)源碼后,與此相關(guān)的文件為:vtkCubeAxesActor.h、vtkCubeAxesActor.cxx,如下圖:
2、.h中增加私有成員變量
//whl2024-06-03 bool m_XAxisFlag, m_YAxisFlag, m_ZAxisFlag;//標(biāo)識(shí)是否修改刻度區(qū)間的個(gè)數(shù) int m_XMajorNum, m_YMajorNum, m_ZMajorNum;//標(biāo)識(shí)設(shè)置刻度區(qū)間的個(gè)數(shù),例如2表示2個(gè)區(qū)間3個(gè)刻度
3、構(gòu)造函數(shù)中隊(duì)成員變量初始化
//whl m_XAxisFlag = false; m_YAxisFlag = false; m_ZAxisFlag = false;
4、增加公有成員函數(shù),進(jìn)行是否自定義修改刻度區(qū)間的設(shè)置
.h中
//whl設(shè)置某個(gè)軸劃分刻度區(qū)間的個(gè)數(shù),可防止軸刻度文本重疊:nAxis軸號(hào),bFlag設(shè)置/取消設(shè)置的標(biāo)志,nMajorNum劃分區(qū)間的個(gè)數(shù) 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()函數(shù)中修改增加:
//whl判斷是否自定義刻度區(qū)間 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、使用時(shí),在調(diào)用VTK軸相關(guān)的地方(代碼中還增加了Z軸標(biāo)簽旋轉(zhuǎn)90°,效果更好)
//設(shè)置某個(gè)軸劃分區(qū)間的個(gè)數(shù),可防止軸刻度文本重疊:nAxis軸號(hào),bFlag設(shè)置/取消設(shè)置的標(biāo)志,nMajorNum劃分區(qū)間的個(gè)數(shù) m_cubeAxesActor->SetAxisMajorNum(2, true, 2);//設(shè)置Z軸 m_cubeAxesActor->GetLabelTextProperty(2)->SetOrientation(90);//Z軸標(biāo)簽旋轉(zhuǎn)90°
7、最終結(jié)果:
到此這篇關(guān)于VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題的文章就介紹到這了,更多相關(guān)VTK刻度標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c++和python實(shí)現(xiàn)順序查找實(shí)例
這篇文章主要介紹了c++和python實(shí)現(xiàn)順序查找實(shí)例,流程即將目標(biāo)數(shù)值和數(shù)據(jù)庫(kù)中的每個(gè)數(shù)值進(jìn)行比較,如果相同則搜索完成,如果不同則繼續(xù)比較下一處,下面來(lái)看看具體的實(shí)例操作吧,需要的朋友可以參考一下2022-03-03C++?auto關(guān)鍵字的小知識(shí)點(diǎn)分享
這篇文章主要是來(lái)和大家介紹一些C++中的小知識(shí)點(diǎn),本文將從auto關(guān)鍵字開(kāi)始講起,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-05-05鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)詳細(xì)介紹
靜態(tài)鏈接庫(kù).lib和動(dòng)態(tài)鏈接庫(kù).dll。其中動(dòng)態(tài)鏈接庫(kù)在被使用的時(shí)候,通常還提供一個(gè).lib,稱為引入庫(kù),它主要提供被Dll導(dǎo)出的函數(shù)和符號(hào)名稱,使得鏈接的時(shí)候能夠找到dll中對(duì)應(yīng)的函數(shù)映射2012-11-11關(guān)于C++中定義比較函數(shù)的三種方法小結(jié)
下面小編就為大家?guī)?lái)一篇關(guān)于C++中定義比較函數(shù)的三種方法小結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10從匯編看c++中默認(rèn)構(gòu)造函數(shù)的使用分析
c++中,如果為一個(gè)類沒(méi)有明確定義一個(gè)構(gòu)造函數(shù),那么,編譯器就會(huì)自動(dòng)合成一個(gè)默認(rèn)的構(gòu)造函數(shù)。下面,通過(guò)匯編程序,來(lái)看一下其真實(shí)情況2013-05-05