查看: 1092|回复: 3

动态设置osgText::Text::setCharacterSize

[复制链接]

该用户从未签到

发表于 2013-5-30 10:24:05 | 显示全部楼层 |阅读模式
在事件处理里面在点击鼠标动态添加text标注,用trackball操作器放大、缩小场景时对添加的textsize需要根据视景体里面的场景范围动态改变才能正常显示,但是怎样设置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;

该用户从未签到

发表于 2013-5-30 19:21:22 | 显示全部楼层
设置数字就行了啊

该用户从未签到

 楼主| 发表于 2013-5-30 22:18:47 | 显示全部楼层
liuzhiyu123 发表于 2013-5-30 19:21
设置数字就行了啊

关键是不清楚应该设置多大啊,用trackball对相机进行控制,当对场景进行放大(拉近相机与物体距离)时,怎样动态的设置此时在场景中要添加text的size的值呢?我想实现的功能是鼠标点击某个位置随即添加上一个文本text,当场景放大、缩小时,添加的字体大小正好合适,能够在视景体内恰当显示,谢谢

该用户从未签到

发表于 2013-5-31 07:46:59 | 显示全部楼层
哦 那这个要您自己去计算了  根据camera的相关信息 去设置这个text的大小   或者是在屏幕上的 pixelSize
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表