osgManipulator.Scale2DDragger是OpenSceneGraph中的一个用于缩放2D对象的拖动器。它可以用于2D图形编辑、CAD工具等场景。
Scale2DDragger可以用于一组代表一个2D对象的Geode节点中。为Geode节点创建一个Scale2DDragger实例,并将其作为子节点添加到Geode节点中。例如:
osg::ref_ptr<osg::Geode> geode = ...; // 创建Geode节点
osg::ref_ptr<osgManipulator::Scale2DDragger> scaleDragger = new osgManipulator::Scale2DDragger();
geode->addChild(scaleDragger.get()); // 将Scale2DDragger设置为Geode的子节点
然后将缩放事件绑定到Scale2DDragger:
osg::ref_ptr<osgManipulator::ScaleAxisDragger> scaleDragger = ...;
scaleDragger->setupDefaultGeometry();
scaleDragger->setHandleEvents(true); //允许处理事件
scaleDragger->addTransformUpdating(_transform); // 将Scale2DDragger与要缩放的对象的变换关联起来
Scale2DDragger的默认设置包括一个圆圈形的缩放柄和一个矩形的缩放指示器。
class osgManipulator::Scale2DDragger : public osgManipulator::Dragger
Scale2DDragger();
void setHandleColor(const osg::Vec4& color);
osg::Vec4 getHandleColor() const;
void setAxisColor(const osg::Vec4& color);
osg::Vec4 getAxisColor() const;
void setHandleSize(float size);
float getHandleSize() const;
void setAxisSize(float size);
float getAxisSize() const;
void setIndicatorType(IndicatorType type);
IndicatorType getIndicatorType() const;
void setMinScale(float minValue);
float getMinScale() const;
void setMaxScale(float maxValue);
float getMaxScale() const;
void setFixedAxis(bool fixed);
bool getFixedAxis() const;