VTK C++绘制虚线问题:代码设置后仍显示实线求助
VTK绘制虚线不生效的解决办法
你的代码里漏掉了启用线条点画功能的关键步骤,VTK默认关闭虚线渲染,所以即使设置了图案和重复因子,依然会显示实线。
修正方案:
在设置点画参数前,调用SetLineStippleOn()开启虚线模式,同时建议将属性配置代码放在添加actor到渲染器之前(虽然VTK支持后续修改,但提前设置更稳定)。
修正后的完整代码:
double x1 = 0.0; double y1 = 0.0; double x2 = 1.0; double y2 = 1.0; linesource->SetPoint1(x1, y1, 0.0); linesource->SetPoint2(x2, y2, 0.0); linesource->Update(); linemapper->SetInputConnection(linesource->GetOutputPort()); lineactor->SetMapper(linemapper); // 配置线条属性 vtkProperty* lineProperty = lineactor->GetProperty(); lineProperty->SetColor(1.0, 0.0, 0.0); // 设置线条为红色 lineProperty->SetLineStippleOn(); // 启用虚线模式(关键步骤) lineProperty->SetLineStipplePattern(0xf0f0); // 设置虚线图案 lineProperty->SetLineStippleRepeatFactor(5); // 控制虚线段的长度 renderer->AddActor(lineactor);
补充说明:
SetLineStippleOn()是核心,没有这一步,所有点画参数都会被忽略。- 点画图案值
0xf0f0对应长虚线效果,你可以调整这个十六进制值来改变虚线样式:比如0x00ff是短虚线,0xffff是实线。 LineStippleRepeatFactor的值越大,虚线的每个线段就越长,反之则越短。
内容的提问来源于stack exchange,提问作者Zyad Sowilam
相关产品推荐
相关产品推荐

