1

很简单的问题。我正在尝试使用 vtkImageTracerWidget 来表示我的分割算法中的用户输入。我选择这个小部件的灵感来自 David Doria 的代码

换句话说,用户在图像上绘图,它基本上充当画笔,为算法播种。

我目前正在使用以下代码:

tracer->GetLineProperty()->SetLineWidth(20.0);

如果我尝试将线宽设为 1.0,它会完美运行。或者,如果我尝试以相同的方式使用 SetColor() 更改线条颜色。但是,我就是无法让它比 5.0 更宽。我希望用户使用大笔刷进行大而粗的输入。5.0 vtkImageTracerWidget 的行是不够的。

如何增加用户输入的大小?我应该使用另一个小部件吗?我检查了最大线宽,大约是 10^36,所以这显然不是问题。

非常感谢!

4

1 回答 1

0

Goodwin Lawlor 在这里的回答http://vtk.1045678.n5.nabble.com/Problem-with-vtkPolyLine-width-greater-than-20-td5667414.html#a5672819解释说这是 OpenGL 限制。您可以通过检查来验证最大 GL 线宽是否与线宽相对应(在有 GL 上下文之后,这意味着在您调用 之后的某个时间 renderWindowInteractor->Start())。对于测试,您可以在交互器样式事件或类似事件中执行此操作):

// Initialize so we get these values back instead of garbage if the call doesn't work
GLfloat lineWidthRange[2];
lineWidthRange[0] = 123;
lineWidthRange[1] = 123;

glGetFloatv(GL_LINE_WIDTH_RANGE, lineWidthRange);

std::cout << "GL_LINE_WIDTH_RANGE: " << lineWidthRange[0] << " " << lineWidthRange[1] << std::endl;

在我的硬件上,这个打印

GL_LINE_WIDTH_RANGE: 0.5 10

这表明 10(正如我在实验中看到的)是 OpenGL 将绘制的最大线。

于 2014-05-20T19:07:31.110 回答