Я пытаюсь наложить текст на изображение в vtk при нажатии определенной кнопки.Для этого я использую vtkTextActor
, vtkTextRepresentation
и vtkTextWidget
.
Вот мой код:
// 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
Если я закомментирую SetWidth
и SetHeight
вызовы функций, программа работает нормально и текстовый виджет выскакивает довольно мало.Однако, когда я пытаюсь настроить ширину и высоту textActor
, происходит сбой во время вызова рендеринга.Обратите внимание, что vc[0]
и vc[1]
относятся к системе координат окна просмотра, я вычисляю их в другой функции.
Я могу настроить ширину и высоту textActor
ДО вызова textWidget->On()
, ивиджет все еще будет всплывать, но он игнорирует мои изменения ширины и высоты.Я не могу изменить размеры коробки программно.Я что-то не так делаю или это ошибка vtk?
Вот пример.Мне бы хотелось, чтобы текст выглядел больше (изменение размера шрифта не работает, я думаю, это потому, что сам актер слишком мал).
ОБНОВЛЕНИЕ Я не выяснил, почему происходит сбой или как это исправить.В качестве обходного пути я настраивал значение Position2Coordinate
в своем textRepresentation
.Вызов рендеринга, кажется, перенастраивает мои установленные значения.Кто-нибудь может объяснить, почему или как это исправить?