在事件处理里面在点击鼠标动态添加text标注,用trackball操作器放大、缩小场景时对添加的text的size需要根据视景体里面的场景范围动态改变才能正常显示,但是怎样设置osgText::text::setCharacterSize()的参数
bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa) { osg::ref_ptr<osgViewer::Viewer> viewer = dynamic_cast<osgViewer::Viewer*>(&aa); if (!viewer) return false; switch(ea.getEventType()) { //鼠标按下 case(osgGA::GUIEventAdapter:USH): { //更新鼠标位置 _mx = ea.getX(); _my = ea.getY(); break; } case(osgGA::GUIEventAdapter::RELEASE): {
osg::ref_ptr<osg::Geode> geode = new osg::Geode; osg::ref_ptr<osgText::Text>text = new osgText::Text;//显示的文本 osg::ref_ptr<osgText::Font>font = new osgText::Font;//字体样式 font = osgText::readFontFile("arial.ttf"); text->setFont(font); text->setText(“label”); text->setCharacterSize(?);//设置字体大小 text->setColor(osg::Vec4(1,1,0,1));//设置字体颜色 text->setPosition(position);//设置文本位置 geode->addDrawable(text);
viewer->getSceneData()->asGroup()->addChild(geode);
}
}
return false;
|