设置vtkLegendScaleActor对象的位置

时间:2019-05-20 11:26:30

标签: c++ vtk

我已经这样定义了我的vtkLegendScaleActor:

    vtkSmartPointer<vtkLegendScaleActor> legendScaleActor = vtkSmartPointer<vtkLegendScaleActor>::New();
    legendScaleActor->GetLegendLabelProperty()->SetColor(0,0,0);
    legendScaleActor->GetLegendTitleProperty()->SetColor(0,0,0);
    legendScaleActor->SetBottomAxisVisibility(0);
    legendScaleActor->SetTopAxisVisibility(0);
    legendScaleActor->SetRightAxisVisibility(0);
    legendScaleActor->SetLeftAxisVisibility(0);
    legendScaleActor->GetLegendLabelProperty()->SetFontSize(legendScaleActor->GetLegendLabelProperty()->GetFontSize() * 2);
    legendScaleActor->GetLegendTitleProperty()->SetFontSize(legendScaleActor->GetLegendTitleProperty()->GetFontSize() * 2);

我想增加标签和标题中的字体大小,并隐藏所有轴。

结果是: enter image description here

在这里我可以看到带有比例尺规则的几何图形,但是它受窗口范围的限制。

我想上移图例,但是我可以找到给定类的正确属性。关于如何做的任何想法?

编辑

我一直在解决这个问题,我要做的是使用

vtkLegendScaleActor 对象的标签和标题添加负偏移量,

    legendScaleActor->GetLegendTitleProperty()->SetLineOffset(-25);
    legendScaleActor->GetLegendLabelProperty()->SetLineOffset(-25);

结果是: enter image description here

尽管如此,我不能移动标尺,也不能将整个标尺放在一起……这就是为什么我认为应该有一个更好的解决方案。

1 个答案:

答案 0 :(得分:1)

继承vtkLegendScaleActor。然后重新实现BuildRepresentation方法并修改LabelActor的坐标。这样,您就可以完全控制制图表达,因为所有Actor和Mappers都受到保护,因此可以修改。