fix: fix a measure reload bug

This commit is contained in:
kradchen
2025-07-07 10:19:15 +08:00
parent 6a188112ea
commit d9aaf669eb
6 changed files with 37 additions and 0 deletions

View File

@@ -419,6 +419,20 @@ void DICOMImageViewer::Render() {
}
}
void DICOMImageViewer::RenderReloadMeasure()
{
if (this->GetInput()) {
if (Fusion && FusionActor && !this->ImageStack->HasImage(FusionActor)) {
this->ImageStack->AddImage(FusionActor);
}
if (!Fusion && FusionActor && this->ImageStack->HasImage(FusionActor)) {
this->ImageStack->RemoveImage(FusionActor);
}
this->LoadMeasures(true);
this->RenderWindow->Render();
}
}
// slice about-----------------------------------------------------------------
void DICOMImageViewer::GetSliceRange(int &min, int &max) {
vtkAlgorithm *input = this->GetInputAlgorithm();

View File

@@ -88,6 +88,8 @@ public:
*/
virtual void Render();
virtual void RenderReloadMeasure();
//@{
/**
* Set/Get the input image to the viewer.

View File

@@ -253,8 +253,12 @@ void ImageViewManager::smartDo(SmartDoCallback cb,SmartDoCallback otherCb, Dico
//Slots and actions------------------------------------------------------------
void ImageViewManager::viewClicked(DicomImageView *view) {
//current view show measure
view->RenderReloadMeasure();
if (!view) return;
this->setCurrentView(view);
renderAll();
}
void ImageViewManager::viewDoubleClicked(DicomImageView *view) {
@@ -407,6 +411,14 @@ void ImageViewManager::renderAll() {
}, nullptr, nullptr, All);
}
void ImageViewManager::renderAllReloadMeasure() {
smartDo([](auto v, auto) {
if (v->hasSeries()) {
v->RenderReloadMeasure();
}
}, nullptr, nullptr, All);
}
void ImageViewManager::activeMeasure() {
smartDo([](auto v, auto) {

View File

@@ -83,6 +83,7 @@ public:
void setInteractionMode(int InteractionMode);
void renderAll();
void renderAllReloadMeasure();
void activeMeasure();

View File

@@ -162,6 +162,12 @@ bool DicomImageView::hasSeries() {
return mSeries;
}
void DicomImageView::RenderReloadMeasure()
{
if (!hasSeries()) return;
mImageViewer->RenderReloadMeasure();
}
void DicomImageView::loadSeries(SeriesImageSet *series) {
if (!series) return;
initImageViewer();

View File

@@ -46,6 +46,8 @@ public:
void render();
void RenderReloadMeasure();
//Series
void setDicomImageView(SeriesImageSet *series);