vtkBorderWidgetウィンドウの位置を設定する問題



   vtkBorderWidgetを使用するには、Widgetの位置とサイズを変更する必要があります.
 

  
  
  
  
  1. representation->GetPositionCoordinate()->SetCoordinateSystemToWorld(); 
  2. representation->GetPosition2Coordinate()->SetCoordinateSystemToWorld(); 
  3. representation->SetPosition(pos[0],pos[1]); 
  4. representation->SetPosition(pos1[0],pos1[1]); 

 
   この方法はwidgetの位置を設定することができるが、widgetにマウスと対話する能力を失わせ、vtkBorderReprsentationのソースコードを参照すると、構造関数ではwidget位置の初期化が以下のように採用されていることが分かった.

  
  
  
  
  1. this->PositionCoordinate->SetCoordinateSystemToNormalizedViewport(); 
  2.  this->PositionCoordinate->SetValue(0.05, 0.05); 
  3.  this->Position2Coordinate = vtkCoordinate::New(); 
  4.  this->Position2Coordinate->SetCoordinateSystemToNormalizedViewport(); 
  5.  this->Position2Coordinate->SetValue(0.1, 0.1); 

 
   そこで、コードを次のように書き換えます.

  
  
  
  
  1. representation->GetPositionCoordinate()->SetCoordinateSystemToNormalizedViewport(); 
  2. representation->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport(); 
  3. representation->SetPosition(pos[0],pos[1]); 
  4. representation->SetPosition(pos1[0],pos1[1]); 

   最終的な結果、widget位置は自分の意思で修正され、マウスとのインタラクションを継続することができる.