diff --git a/src/src/Rendering/Viewer/DICOMImageViewer.cxx b/src/src/Rendering/Viewer/DICOMImageViewer.cxx index d82832f..d0b841c 100644 --- a/src/src/Rendering/Viewer/DICOMImageViewer.cxx +++ b/src/src/Rendering/Viewer/DICOMImageViewer.cxx @@ -426,7 +426,7 @@ int DICOMImageViewer::GetSliceMax() { } int DICOMImageViewer::GetSlice() { - return this->ImageMapper->GetSliceNumber(); + return Slice; } void DICOMImageViewer::SetSlice(int slice) { diff --git a/src/src/UI/Widget/ImageView/dicomimageview.cpp b/src/src/UI/Widget/ImageView/dicomimageview.cpp index 4da35d8..f236ac6 100644 --- a/src/src/UI/Widget/ImageView/dicomimageview.cpp +++ b/src/src/UI/Widget/ImageView/dicomimageview.cpp @@ -24,7 +24,7 @@ DicomImageView::DicomImageView(QWidget *parent) mSeries(nullptr), mScrollBar(new ClickableScrollBar(Qt::Orientation::Vertical, this)), mTitleBar(createMyTitleBar()), mGLWidget(new QVTKOpenGLNativeWidget), mVcrToolbar(nullptr), mVcrController(nullptr), mOverlayView(nullptr), mBaseView(nullptr), mIsCine(false), mIsNegative(false), - mIsOverlay(false), mIsSlotInited(false) + mIsOverlay(false), mIsSlotInited(false),mCurrentRAngle(0) { //main container QFrame *wrapper = new QFrame(this); @@ -610,6 +610,7 @@ void DicomImageView::hFlipImage() { int slice = mImageViewer->GetSlice(); //HFlip //mImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(0, 1, 0); + resetPanZoom(); mImageViewer->GetRenderer()->GetActiveCamera()->Azimuth(180); FlipExportHelper::toggleFlip(); //to avoid black out problem during slicing @@ -627,6 +628,7 @@ void DicomImageView::vFlipImage() { //double scale = mImageViewer->GetRenderer()->GetActiveCamera()->GetParallelScale(); int slice = mImageViewer->GetSlice(); + resetPanZoom(); //Method 2: Order matters mImageViewer->GetRenderer()->GetActiveCamera()->Elevation(-180); mImageViewer->GetRenderer()->GetActiveCamera()->Roll(180); @@ -646,7 +648,9 @@ void DicomImageView::vFlipImage() { void DicomImageView::rotateImage(double angle, TransFormType operation) { if (hasSeries()) { int slice = mImageViewer->GetSlice(); - mImageViewer->GetRenderer()->GetActiveCamera()->Roll(angle); + resetPanZoom(); + mImageViewer->GetRenderer()->GetActiveCamera()->Roll(mCurrentRAngle + angle); + mCurrentRAngle=mCurrentRAngle+angle; //to avoid black out problem during slicing //slcing is related with rotation, you have to recalculate to get it right mImageViewer->GetRenderer()->ResetCameraClippingRange(); diff --git a/src/src/UI/Widget/ImageView/dicomimageview.h b/src/src/UI/Widget/ImageView/dicomimageview.h index de4669a..1fc86da 100644 --- a/src/src/UI/Widget/ImageView/dicomimageview.h +++ b/src/src/UI/Widget/ImageView/dicomimageview.h @@ -346,6 +346,8 @@ private: bool mIsFirstRenderAfterLoad; bool mfirstShowFlag = true; + int mCurrentRAngle; + uint mViewID; void initImageViewer();