程式我就先直接放這裡:
我們不需要都清楚細節,只需要知道這麼幾點:
1. std::string strfolder = "data"; 這個函式是用來記錄存放醫學影像檔案組的資料夾的。
2. 這段程式
// 1d transfer functions
colortf->addrgbpoint(-200, 0.0, 0.0, 0.0);
colortf->addrgbpoint(150, 0.1, 0.1, 0.7);
colortf->addrgbpoint(350, 0.2, 0.2, 0.4);
colortf->addrgbpoint(512, 1.0, 1.0, 1.0);
colortf->addrgbpoint(range[1], 0.9, 0.1, 0.1);
scalartf->addpoint(-200, 0.00);
scalartf->addpoint(150, 0.20);
scalartf->addpoint(350, 0.30);
scalartf->addpoint(512, 0.5);
scalartf->addpoint(range[1], 0.4);
gradienttf->addpoint(-200, 0.0);
gradienttf->addpoint(150, 0.1);
gradienttf->addpoint(350, 0.1);
gradienttf->addpoint(512, 0.6);
gradienttf->addpoint(range[1] / 4.0, 1.0);
這些函式是用來設定傳輸函式的,大家可以看到其實就是一堆斷點,相當於之前我們設計的xml解析程式裡面的各個node。
大家注意到我們在這裡故意設定每組傳輸函式(例如 colortf 和 scalartf 和 gradienttf)它們對應的第乙個引數值都是相同的,所以我們可以用乙個node來同時記錄這些資料,第乙個引數是表示intensity,程式裡(還記得嗎)我們設定的是normalizedintensity,即單位化的intensity。
3. 把設定的斷點加進來
volumeproperty->setscalaropacity(scalartf);
volumeproperty->setgradientopacity(gradienttf);
volumeproperty->setcolor(colortf);
這三句話是把屬性設定到我們的渲染框架裡
4.後面關於interactor之類的函式是來設定互動方式的,這我們暫時先不用管,注意你們要配置的vtk庫一定是要在cmake中選擇支援qt,然後相關配置查其他部落格就好了。弄好以後,會生成qvtkwidget,作為vtk渲染資料的顯示區。
我們到時候要在視窗裡放置乙個qvtkwidget,然後直接用vtk自己帶的互動功能就好了(旋轉三維物體等)。
關於傳輸函式如果不會的話就看這篇部落格:
vtk修煉之道 不透明度傳輸函式
常用 API 函式 控制項與訊息函式
adjustwindowrect 給定一種視窗樣式,計算獲得目標客戶區矩形所需的視窗大小 anypopup 判斷螢幕上是否存在任何彈出式視窗 arrangeiconicwindows 排列乙個父視窗的最小化子視窗 attachthreadinput 連線線程輸入函式 begindeferwindow...
qt自定義控制項 2
環境 qtcreator 4.0.2 qt5.7.0 msvc 2013,32bit 步驟 1 在上篇文章的基礎上,我們在demo1自定義控制項類中新增如下 q enums m id q property qstring m id read get id write set id private q...
Qt設計師 控制項公共屬性
objectname 控制項名 geometry 幾何屬性 x y 控制項座標 寬度 高度 控制項大小 sizepolicy 控制項在布局管理中的縮放方式 fixed 控制項不能放大或者縮小,控制項的大小就是它的sizehint minimum 控制項的sizehint為控制項的最小尺寸。控制項不能...