OpenCaseCade中一个V3d_Viewer对应多个示例窗口V3d_View

在OCC一般使用中会根据本机系统环境创建不同的图形设备对象,在创建V3d_Viewer对象时必须给定相应的图形驱动程序与相关参数,一般一个V3d_Viewer对象会根据指定窗口(Windows下)创建一个视图(V3d_View),用来显示绘制出的图像信息,这种一对一的关系其实也可以转换成 一对多的情况,这就看实际使用中是否会对开发者有帮助。

一个V3d_Viewer对应多个示例窗口V3d_View

occ中根据V3d_Viewer类创建视图窗口的方法:

//! creates a view in the viewer according to its
//! default parameters.
Standard_EXPORT   Handle(V3d_View) CreateView() ;

基本创建过程:

Handle(Graphic3d_GraphicDriver) myGraphicDriver;   //图形设备对象

Handle(V3d_Viewer) myViewer = new V3d_Viewer(myGraphicDriver,a3DName1.ToExtString()); 

Handle(AIS_InteractiveContext) myAISContext = new AIS_InteractiveContext(myViewer);

Handle(V3d_View) myView = myViewer->CreateView();       //第一个显示窗口

Handle(WNT_Window) aWNTWindow = new WNT_Window(hwnd);   //第一个显示窗口需要显示的窗口句柄

myView->SetWindow(aWNTWindow); 

创建两个窗口实例,在上面代码之后添加新的代码:

Handle(V3d_View) myView1 = myViewer->CreateView();        //第二个显示窗口

Handle(WNT_Window) aWNTWindow1 = new WNT_Window(hwnd1);   //需要显示的窗口句柄

myView1->SetWindow(aWNTWindow1); 

如上代码一个V3d_Viewer对应一个AIS_InteractiveContext交互管理对象,对应多个V3d_View实例窗口,这样就可以吧一个

AIS_InteractiveContext中的图元分别显示在两个显示窗口中,而且完全相同,这样就实现了一份显示内容同时显示在两个不同的窗口中。

如果在窗口初始化后,又改变了显示窗口的大小,致使窗口无法显示,则需要重新调整窗口:

myView->SetWindow(aWNTWindow); 

myView1->SetWindow(aWNTWindow1); 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页