feat: reset zoom & pan before rotate & flip
This commit is contained in:
@@ -426,7 +426,7 @@ int DICOMImageViewer::GetSliceMax() {
|
||||
}
|
||||
|
||||
int DICOMImageViewer::GetSlice() {
|
||||
return this->ImageMapper->GetSliceNumber();
|
||||
return Slice;
|
||||
}
|
||||
|
||||
void DICOMImageViewer::SetSlice(int slice) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -346,6 +346,8 @@ private:
|
||||
bool mIsFirstRenderAfterLoad;
|
||||
bool mfirstShowFlag = true;
|
||||
|
||||
int mCurrentRAngle;
|
||||
|
||||
uint mViewID;
|
||||
|
||||
void initImageViewer();
|
||||
|
||||
Reference in New Issue
Block a user