wxVTKRenderWindowInteractor *wxVTKiren;
wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
wxVTKiren->GetEventPosition( tmpPx , tmpPy );
- int colorWin=_backWindow - 2*( _backPx - tmpPx );
- int colorLev=_backLevel + 2*( _backPy - tmpPy );
+
+ double colorWin;
+ double colorLev;
+
+ vtkImageData* imgrange = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->GetVtkBaseData()->GetImageData();
+
+ if(imgrange != NULL){
+ double* scalarrange = imgrange->GetScalarRange();
+ double scalarr = scalarrange[1] - scalarrange[0];
+ //std::cout<<"scalar r="<<scalarr<<std::endl;
+ int w, h;
+ ((wxWindow*)wxVTKiren)->GetSize(&w, &h);
+
+ double dw=w,dh=h;
+ double dx = (scalarr*( _backPx - tmpPx ))/dw;
+ double dy = (scalarr*( _backPy - tmpPy ))/dh;
+
+ //colorWin=_backWindow - (scalarr)*( _backPx - tmpPx );
+ colorWin=_backWindow - dx;
+ colorLev=_backLevel + dy;
+ }else{
+ colorWin=_backWindow - 2*( _backPx - tmpPx );
+ colorLev=_backLevel + 2*( _backPy - tmpPy );
+ }
if (colorWin<0)
{
{
if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
(_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){
-
_stateWindowLevel = true;
wxVTKRenderWindowInteractor *wxVTKiren;
wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
wxVTKiren->GetEventPosition( _backPx , _backPy );
-
- _backWindow = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow());
- _backLevel = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel());
+ _backWindow = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow();
+ _backLevel = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel();
}
return true;
}