查看: 1506|回复: 7

这个坐标窗口怎么控制呀?

[复制链接]

该用户从未签到

发表于 2012-3-12 20:35:53 | 显示全部楼层 |阅读模式
请看这张图片:
截图00.jpg

该用户从未签到

发表于 2012-3-12 22:39:37 | 显示全部楼层
去掉osgText::Text::BOUNDINGBOX

该用户从未签到

 楼主| 发表于 2012-3-13 09:09:38 | 显示全部楼层
heksn 发表于 2012-3-12 22:39
去掉osgText::Text::BOUNDINGBOX

这个不是,你可以看下osgWidgetLable这个例子的代码,上面这个程序中没用用到你上诉的osgText,这个例子是一个Label的例子。谢谢

该用户从未签到

发表于 2012-3-13 14:00:11 | 显示全部楼层
好像去掉这个event响应就好了~~~

该用户从未签到

 楼主| 发表于 2012-3-13 14:34:43 | 显示全部楼层
本帖最后由 nick.JD 于 2012-3-13 14:35 编辑
tianxiao888 发表于 2012-3-13 14:00
好像去掉这个event响应就好了~~~


不对,这个osgWidegetLable例子没有直接使用event事件响应,我无从下手,如果您想提供帮助,最好能看下这个例子。
  1. // -*-c++-*- osgWidget - Code by: Jeremy Moles (cubicool) 2007-2008
  2. // $Id: osgwidgetlabel.cpp 66 2008-07-14 21:54:09Z cubicool $

  3. #include <osg/io_utils>
  4. #include <osgWidget/Util>
  5. #include <osgWidget/WindowManager>
  6. #include <osgWidget/Box>
  7. #include <osgWidget/Label>

  8. const unsigned int MASK_2D = 0xF0000000;

  9. const char* LABEL1 =
  10.     "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed\n"
  11.     "do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n"
  12.     "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris\n"
  13.     "nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in..."
  14. ;

  15. const char* LABEL2 =
  16.     "...reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla\n"
  17.     "pariatur. Excepteur sint occaecat cupidatat non proident, sunt in \n"
  18.     "culpa qui officia deserunt mollit anim id est laborum. BBBBB"
  19. ;

  20. osgWidget::Label* createLabel(const std::string& l, unsigned int size=13) {
  21.     osgWidget::Label* label = new osgWidget::Label("", "");

  22.     label->setFont("fonts/Vera.ttf");
  23.     label->setFontSize(size);
  24.     label->setFontColor(1.0f, 1.0f, 1.0f, 1.0f);
  25.     label->setLabel(l);

  26.     /*
  27.     text->setBackdropType(osgText::Text::DROP_SHADOW_BOTTOM_RIGHT);
  28.     text->setBackdropImplementation(osgText::Text::NO_DEPTH_BUFFER);
  29.     text->setBackdropOffset(0.2f);
  30.     */

  31.     return label;
  32. }

  33. int main(int argc, char** argv) {
  34.     osgViewer::Viewer viewer;

  35.     osgWidget::WindowManager* wm = new osgWidget::WindowManager(
  36.         &viewer,
  37.         1280.0f,
  38.         1024.0f,
  39.         MASK_2D,
  40.         // osgWidget::WindowManager::WM_USE_RENDERBINS |
  41.         osgWidget::WindowManager::WM_PICK_DEBUG
  42.     );
  43.    
  44.     osgWidget::Box*   box    = new osgWidget::Box("HBOX", osgWidget::Box::HORIZONTAL);
  45.     osgWidget::Box*   vbox   = new osgWidget::Box("vbox", osgWidget::Box::VERTICAL);
  46.     osgWidget::Label* label1 = createLabel(LABEL1);
  47.     osgWidget::Label* label2 = createLabel(LABEL2);

  48.     // Setup the labels for horizontal box.
  49.     label1->setPadding(10.0f);
  50.     label2->setPadding(10.0f);

  51.     label1->addSize(21.0f, 22.0f);
  52.     label2->addSize(21.0f, 22.0f);

  53.     label1->setColor(1.0f, 0.5f, 0.0f, 0.0f);
  54.     label2->setColor(1.0f, 0.5f, 0.0f, 0.5f);

  55.     label2->setImage("Images/Brick-Norman-Brown.TGA", true);

  56.     box->addWidget(label1);
  57.     box->addWidget(label2);
  58.     box->attachMoveCallback();
  59.     box->attachScaleCallback();
  60.     box->attachRotateCallback();

  61.     // Setup the labels for the vertical box.
  62.     osgWidget::Label* label3 = createLabel("Label 3", 80);
  63.     osgWidget::Label* label4 = createLabel("Label 4", 60);
  64.     osgWidget::Label* label5 = createLabel("ABCDEFGHIJK", 93);

  65.     label3->setPadding(3.0f);
  66.     label4->setPadding(3.0f);
  67.     label5->setPadding(3.0f);

  68.     label3->setColor(0.0f, 0.0f, 0.5f, 0.5f);
  69.     label4->setColor(0.0f, 0.0f, 0.5f, 0.5f);
  70.     label5->setColor(0.0f, 0.0f, 0.5f, 0.5f);
  71.    
  72.     //label5->setAlignHorizontal(osgWidget::Widget::HA_LEFT);
  73.     //label5->setAlignVertical(osgWidget::Widget::VA_BOTTOM);

  74.     // Test our label copy construction...
  75.     osgWidget::Label* label6 = osg::clone(label5, "label6", osg::CopyOp::DEEP_COPY_ALL);

  76.     label6->setLabel("abcdefghijklmnopqrs");

  77.     vbox->addWidget(label3);
  78.     vbox->addWidget(label4);
  79.     vbox->addWidget(label5);
  80.     vbox->addWidget(label6);
  81.     vbox->attachMoveCallback();
  82.     vbox->attachScaleCallback();

  83.     vbox->resize();

  84.     // vbox->setVisibilityMode(osgWidget::Window::VM_ENTIRE);
  85.     // vbox->setVisibleArea(50, 50, 500, 200);
  86.     // vbox->setAnchorVertical(osgWidget::Window::VA_TOP);
  87.     // vbox->setAnchorHorizontal(osgWidget::Window::HA_RIGHT);

  88.     // Test our label-in-window copy construction...
  89.     osgWidget::Box* clonedBox = osg::clone(box, "HBOX-new", osg::CopyOp::DEEP_COPY_ALL);
  90.    
  91.     clonedBox->getBackground()->setColor(0.0f, 1.0f, 0.0f, 0.5f);

  92.     wm->addChild(box);
  93.     wm->addChild(vbox);
  94.     wm->addChild(clonedBox);

  95.     return osgWidget::createExample(viewer, wm);
  96. }
复制代码

该用户从未签到

发表于 2012-3-13 16:08:53 | 显示全部楼层
在最后一行 osgWidget: :createExample(viewer, wm);
请看一下 createExample 的代码,里面有 viewer.addEventHandler(new osgWidget: :MouseHandler(wm));

该用户从未签到

 楼主| 发表于 2012-3-13 18:39:22 | 显示全部楼层
本帖最后由 nick.JD 于 2012-3-13 18:40 编辑
xuganggm 发表于 2012-3-13 16:08
在最后一行 osgWidget: :createExample(viewer, wm);
请看一下 createExample 的代码,里面有 viewer.addE ...


你好,谢谢你提供的信息:这个我注意到了,让这个MouseHandler失效,并不是我希望的结果。我只是想让它不要随便出现就好。

因为:这个鼠标事件是需要的,我需要鼠标反馈回来的数据,不需要的只是上面的那个黑框框提示。
目的:黑框框中的信息数据是有用的!这些数据只需要我和程序知道,并能控制就可以了,用户不需要看到。——美观。

该用户从未签到

发表于 2012-3-17 11:13:06 | 显示全部楼层
你把上面的addwidget语句挨个注释一下然后运行 一下,我想这个问题就能解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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