From 6b81839f15b751f2cfea6d495e6e4510a17a85df Mon Sep 17 00:00:00 2001 From: kradchen Date: Mon, 12 May 2025 10:11:03 +0800 Subject: [PATCH] feat: improve image viewer render performance --- src/src/Rendering/Viewer/DICOMImageViewer.cxx | 4 ++-- src/src/UI/Widget/ImageView/dicomimageview.cpp | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/src/Rendering/Viewer/DICOMImageViewer.cxx b/src/src/Rendering/Viewer/DICOMImageViewer.cxx index d69cbd4..dcccdea 100644 --- a/src/src/Rendering/Viewer/DICOMImageViewer.cxx +++ b/src/src/Rendering/Viewer/DICOMImageViewer.cxx @@ -466,7 +466,7 @@ void DICOMImageViewer::SetSlice(int slice) { if (Fusion && FusionMapper) { FusionMapper->SetClippingPlanes(ImageMapper->GetClippingPlanes()); } - this->Render(); + // this->Render(); UpdateTopLeftCornerInfo(); if (InteractorStyle){ double direction = (double)(slice - lastSliceNumber); @@ -1186,7 +1186,6 @@ void DICOMImageViewer::UpdateCornerInfo(int index) { cornerAnnotation->SetText(index, m_cornerInfo.ConstAnno[index].c_str()); } } - this->Render(); } void DICOMImageViewer::UpdateCornerInfoAll() { @@ -1200,6 +1199,7 @@ void DICOMImageViewer::UpdateCornerInfoAll() { UpdateCornerInfo(RIGHT_MIDDLE); UpdateCornerInfo(LEFT_MIDDLE); UpdateCornerInfo(TOP_MIDDLE); + this->Render(); } else { cornerAnnotation->ClearAllTexts(); this->Render(); diff --git a/src/src/UI/Widget/ImageView/dicomimageview.cpp b/src/src/UI/Widget/ImageView/dicomimageview.cpp index fb532a7..bf24b46 100644 --- a/src/src/UI/Widget/ImageView/dicomimageview.cpp +++ b/src/src/UI/Widget/ImageView/dicomimageview.cpp @@ -254,8 +254,10 @@ void DicomImageView::fusionWindowChanged(double level, double width) { } void DicomImageView::imageTransformed() { + if (hasSeries()){ mImageViewer->UpdateOrientationInfo(); mImageViewer->Render(); + } } void DicomImageView::clicked() { @@ -430,6 +432,7 @@ void DicomImageView::clearFusionContext() { //Callbacks------------------------------------------------------------------------------------ void DicomImageView::windowLevelHandle() { mImageViewer->UpdateCornerInfo(BOTTOM_RIGHT); + mImageViewer->Render(); emit onFusionWindowChange(mImageViewer->GetColorLevel(), mImageViewer->GetColorWindow()); } @@ -490,7 +493,6 @@ void DicomImageView::render() { if (hasSeries()) { mImageViewer->Render(); } - } int DicomImageView::getReconPlane() { @@ -576,6 +578,7 @@ void DicomImageView::setWindowLevel(double level, double width) { //You have to call updateConerInfo manually //only mouse event can rely on callback mImageViewer->UpdateCornerInfo(BOTTOM_RIGHT); + mImageViewer->Render(); emit onFusionWindowChange(level, width); } @@ -677,6 +680,7 @@ void DicomImageView::updateCornerInfoAll() { void DicomImageView::updateCornerInfoPrivacy() { if (hasSeries()) { mImageViewer->UpdateCornerInfo(TOP_RIGHT); + mImageViewer->Render(); } }