fix: fix reference line first render position bug(caused by renderer resize),improve reference render performance
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user