osgViewer.WindowSizeHandler是一个OpenSceneGraph中用于处理窗口大小变化的抽象基类,它维护了一个窗口大小的观察者列表,当窗口大小发生变化时,通知所有的观察者更新。
void addWindowSizeObserver(osgViewer::WindowSizeObserver *observer)
向观察者列表中添加一个观察者。
void removeWindowSizeObserver(osgViewer::WindowSizeObserver *observer)
从观察者列表中移除一个观察者。
void resizeAllWindows(int width, int height)
更改所有窗口的大小为指定大小。
void resizeAllWindows()
更改所有窗口的大小为当前大小。
virtual bool handle(osgGA::EventAdapter const &ea, osgGA::GUIActionAdapter &aa)
继承自osgGA::GUIEventHandler,用于响应窗口大小变化事件,一般会调用resizeAllWindows
函数。
osgViewer.WindowSizeHandler有两个派生类,分别是:
osgViewer.SingleWindowSizeHandler
用于处理单个窗口的大小变化。
osgViewer.CompositeViewerSizeHandler
用于处理复合视图中子窗口的大小变化。
在使用osgViewer.WindowSizeHandler时,需要手动调用addWindowSizeObserver
函数将观察者加入观察者列表,否则无法接收到窗口大小变化事件。同时,需要在创建窗口时指定窗口大小,否则可能会收到错误的窗口大小事件。