VTK 設定滑動條

2021-09-11 07:34:21 字數 3683 閱讀 2720

以下例子是:

面繪製乙個mhd檔案,在設定  vesselextractor->setvalue( 0 ,20)的第二個值時,沿用滑動條來觀察結果;

如果你用在其他場景下,相應改變vtkslidercallback中的引數和函式語句即可;

參考的部落格原文:

#include"vtkconesource.h"

#include"vtkrenderwindow.h"

#include"vtkcamera.h"

#include"vtkactor.h"

#include"vtkrenderer.h"

#include"vtkrenderwindowinteractor.h"

#include"vtkinteractorstyletrackballcamera.h"

#include"vtkcommand.h"

#include"vtksliderwidget.h"

#include"vtksliderrepresentation3d.h"

#include"vtkproperty.h"

#include"vtklight.h"

class vtkslidercallback :public vtkcommand

virtual void execute(vtkobject*caller, unsigned long, void*)

vtkslidercallback() :vesselextractor(0){}

vtkmarchingcubes *vesselextractor;

};int main()

vtkmarchingcubes *vesselextractor = vtkmarchingcubes::new();

vesselextractor->setinputconnection(reader->getoutputport());

vesselextractor->setnumberofcontours(1);

vesselextractor->setvalue( 0 ,20); //面繪製設定的值,可改

vtkstripper *vesselstripper = vtkstripper::new();

vesselstripper->setinputconnection(vesselextractor->getoutputport());

vtkactor *vessel = vtkactor::new();

vessel->getproperty()->setdiffusecolor(-4, -4, 0);

vessel->getproperty()->setspecular(.3);

vessel->getproperty()->setspecularpower(20);

vessel->getproperty()->setcolor(1,0.75,0);

vessel->getproperty()->setopacity(1);

vtkrenderer*ren1 = vtkrenderer::new();

ren1->addactor(vessel);

ren1->setbackground( 120, 120, 120 );

vtkrenderwindow*renwin = vtkrenderwindow::new();

renwin->addrenderer(ren1);

renwin->setsize(1000, 1000);

vtkrenderwindowinteractor*iren = vtkrenderwindowinteractor::new();//設定互動

iren->setrenderwindow(renwin);

vtkinteractorstyletrackballcamera *style = vtkinteractorstyletrackballcamera::new();

iren->setinteractorstyle(style);

//例項化vtksliderrepresentation3d,並設定屬性。該物件用做滑塊在場景中的3d表示

vtksliderrepresentation3d* sliderrep = vtksliderrepresentation3d::new();

sliderrep->setvalue(30);

//滑動條兩端的值,預設0-100

sliderrep->setminimumvalue(0);

sliderrep->setmaximumvalue(100);

sliderrep->settitletext("vessel value");

//text position

sliderrep->getpoint1coordinate()->setcoordinatesystemtoworld();

sliderrep->getpoint1coordinate()->setvalue(10, 10, 0);

sliderrep->getpoint2coordinate()->setcoordinatesystemtoworld();

sliderrep->getpoint2coordinate()->setvalue(200, 10, 0);//titletext的座標

sliderrep->setsliderlength(0.05);

sliderrep->setsliderwidth(0.05);

sliderrep->setendcaplength(0.05);

vtksliderwidget*sliderwidget = vtksliderwidget::new();

sliderwidget->setinteractor(iren);

sliderwidget->setrepresentation(sliderrep);

sliderwidget->setanimationmodetoanimate();

sliderwidget->enabledon();//用於使用滑塊

vtkslidercallback* callback = vtkslidercallback::new();

callback->vesselextractor = vesselextractor;

sliderwidget->addobserver(vtkcommand::interactionevent, callback);

//vtkboxwidget*boxwidget = vtkboxwidget::new();//建立vtkboxwidget例項

//boxwidget->setinteractor(iren); // 設定互動器

//boxwidget->setplacefactor(1.25); //設定縮放因子

//boxwidget->setprop3d(coneactor);//關聯乙個道具

//boxwidget->placewidget();//對位置初始化

vtkmycallback*callback = vtkmycallback::new();

//boxwidget->addobserver(vtkcommand::interactionevent, callback);

//boxwidget->on();

iren->initialize();

iren->start();

return 0;

}

滑動條(滾動)

在初始化對話方塊裡,首先對滑動條進行初始化,並繫結控制項變數 scrollinfo si 滾動條結構 si.cbsize sizeof si si.fmask sif range sif page 範圍,從左邊到右邊 si.nmin 0 最小值 si.nmax 100 最大值 si.npage 10...

橫向滾動條(滑動條)

asp.net的gridview本身不帶滾動條,可通過panel實現。但是windows自帶的橫向滾動條只支援顯示在下方,為了使用方便,需要在上下方都顯示橫向滾動條。查詢了很多方法,有些不能實現 被滾動內容的寬度未知,但使用這種方法必須已知 其它的不能完全相容這些瀏覽器 ie6,firefox,ch...

egret Scroller 隱藏滑動條

在 egret engine 3.0.3 優化了 scroller 的體驗。當我們使用 scroller 實現一些滾動區域的效果時,會發現右側有乙個滾動條 scrollbar 預設是自動隱藏的。即當我們不滾動區域時時不會顯示該滾動條的。現在可以使用 scrollbar vscrollbar 和 hs...