正如标题中所述,我需要对osgWidget :: frame的背景进行纹理化,无论我对它做什么,它都不会改变它的默认白色......
这是我迄今为止所做的尝试:
titleFrame= osgWidget::Frame::createSimpleFrameFromTheme(
"frame",
bgTexture,
5.0f,
5.0f,
osgWidget::Frame::FRAME_TEXTURE
);
titleFrame->getBackground()->setColor( osg::Vec4(1,1,1, 1) );
titleFrame->getBackground()->setTexture( new osg::Texture2D( bgTexture ) );
titleFrame->getBackground()->setTexCoordWrapHorizontal();
我尝试将设置颜色的颜色更改为红色,但无效。 我到目前为止找到的唯一解决方案是用空标签填充它。问题是我需要那个框架才能滚动,我需要不断添加和删除它的项目,所以空标签解决方案并不是很好。
此外,我在尝试更改背景设置之前和之后尝试将框架添加到窗口管理器中,但它也没有工作。
我还应该提一下,这个框架嵌入在osgWidget :: Box中,不知道是否有任何改变。
无论如何,如果有人能解决这个问题,我将不胜感激。
(BTW是否有可能使小部件无法聚焦?)
答案 0 :(得分:0)
我认为您需要在title->setFlags(osgWidget::Frame::FrameOptions
::FRAME_TEXTURE)
之前执行titleFrame->getBackground()->setTexture(image)
。
否则titleFrame->canTexture()
将返回false
。
//我没有在这里确认解决方案的环境。
答案 1 :(得分:0)
尝试使用titleFrame->getBackground()->setImage(image, true)
。