fix: fix reference line first render position bug(caused by renderer resize),improve reference render performance

This commit is contained in:
kradchen
2025-07-22 09:39:47 +08:00
parent 5fb95123ab
commit 886b9a92b2
3 changed files with 11 additions and 5 deletions

View File

@@ -60,7 +60,13 @@ int ReferenceLineLegendActor::RenderOverlay(vtkViewport *viewport) {
} }
void ReferenceLineLegendActor::BuildShape(vtkRenderer *renderer) { void ReferenceLineLegendActor::BuildShape(vtkRenderer *renderer) {
if (mModifyTime == MTime)return; QString rendererSize = QString("rendererSize:%1,%2").arg(renderer->GetRenderWindow()->GetSize()[0]).arg(renderer->GetRenderWindow()->GetSize()[1]);
QString newRenderTime = QString("%1-%2-%3-%4").arg(linePoints->GetMTime())
.arg(rendererSize).arg(renderer->GetActiveCamera()->GetMTime())
.arg(GetMTime());
if (mRenderTime == newRenderTime)
return;
if (Visibility) { if (Visibility) {
vtkNew<vtkPoints> pts; vtkNew<vtkPoints> pts;
@@ -98,5 +104,5 @@ void ReferenceLineLegendActor::BuildShape(vtkRenderer *renderer) {
shadow2D->GetMapper()->SetInputDataObject(renderData); shadow2D->GetMapper()->SetInputDataObject(renderData);
actor2D->GetMapper()->SetInputDataObject(renderData); actor2D->GetMapper()->SetInputDataObject(renderData);
} }
mModifyTime = MTime; mRenderTime=newRenderTime;
} }

View File

@@ -7,6 +7,8 @@
#include <vtkPolyData.h> #include <vtkPolyData.h>
#include <vtkNew.h> // for ivars #include <vtkNew.h> // for ivars
#include <QString>
class vtkRenderer; class vtkRenderer;
class ReferenceLineLegendActor : public vtkProp { class ReferenceLineLegendActor : public vtkProp {
@@ -77,7 +79,7 @@ private:
ReferenceLineLegendActor(const ReferenceLineLegendActor &) = delete; ReferenceLineLegendActor(const ReferenceLineLegendActor &) = delete;
void operator=(const ReferenceLineLegendActor &) = delete; void operator=(const ReferenceLineLegendActor &) = delete;
vtkTimeStamp mModifyTime; QString mRenderTime;
static bool TypeVisibility; static bool TypeVisibility;
}; };

View File

@@ -324,8 +324,6 @@ void DicomImageView::resizeEvent(QResizeEvent *event) {
} }
QWidget::resizeEvent(event); QWidget::resizeEvent(event);
// force update ReferenceLine data
mImageViewer->modifiedReferenceLine();
mImageViewer->ResetZoomScaleToFitWindowSize(); mImageViewer->ResetZoomScaleToFitWindowSize();
mImageViewer->Render(); mImageViewer->Render();
if (mIsCine) { if (mIsCine) {