OpenCasCade中一个V3d_Viewer对应多个示例窗口V3d_View
在OCC一般使用中会根据本机系统环境创建不同的图形设备对象,在创建V3d_Viewer对象时必须给定相应的图形驱动程序与相关参数,一般一个V3d_Viewer对象会根据指定窗口(Windows下)创建一个视图(V3d_View),用来显示绘制出的图像信息,这种一对一的关系其实也可以转换成 一对多的情况,这就看实际使用中是否会对开发者有帮助。一个V3d_Viewer对应多个示例窗口V3d_Vie..
在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);
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)