SetWidth(),并自动调用setHeight()在vtkActor2D导致系统崩溃渲染调用后

问题描述 投票:1回答:1

我试图单击某个按钮时VTK叠加在图像上的文字。我使用的是vtkTextActorvtkTextRepresentationvtkTextWidget实现这一目标。

这里是我的代码:

// set up actor
textActor->SetInput(label.toStdString().c_str());
textActor->GetTextProperty()->SetColor(1.0, 0.0, 0.0);

// set location of widget
textRepresentation->GetPositionCoordinate()->SetCoordinateSystemToWorld();
textRepresentation->GetPositionCoordinate()->SetValue(200,200);

// set up widget
textWidget->SetInteractor(imageInteractor);
textWidget->SetRepresentation(textRepresentation);
textWidget->SetDefaultRenderer(rend);
textWidget->SetTextActor(textActor);
textWidget->SelectableOff();

// render widget
rend->GetRenderWindow()->Render();
textWidget->On();
textWidget->GetTextActor()->SetWidth(vc[0]);
textWidget->GetTextActor()->SetHeight(vc[1]);
rend->GetRenderWindow()->Render(); // crash

如果我注释掉SetWidthSetHeight函数调用,程序工作正常,文本组件弹出相当小。然而,当我试着调整的textActor它渲染通话过程中崩溃的宽度和高度。需要注意的是vc[0]vc[1]是相对于视坐标系,我计算出他们不同的功能。

我可以调整textActor的宽度和高度textWidget->On()打电话之前,和小部件仍然会流行起来,但是却忽略了我的宽度和高度的变化。我似乎无法通过编程修改框的尺寸。我是不是做错了什么或者这是一个错误VTK?

下面是一个例子。我想文本出现较大(更改字体大小不会工作,我认为它因为演员本身太小)。

example

UPDATE我还没有想通了,为什么它的崩溃或如何解决它。作为一种变通方法,我一直在调整我的Position2CoordinatetextRepresentation值。渲染调用似乎重新调整我的设定值。任何人都可以解释为何或如何解决这一问题?

c++ vtk qvtkwidget
1个回答
0
投票

我不知道是什么导致崩溃,但我找到了一个解决方法。通过使用textRepresentation->SetPosition(x1,x2)textRepresentation->SetPosition2(width,height),我能够控制控件的位置和大小。它需要注意的是SetPosition2()重要的是,相对于SetPosition()意思,而不是一个坐标,第二位置,应想到的宽度和高度。我所有的价值都在标准化视窗坐标系。

© www.soinside.com 2019 - 2024. All rights reserved.