用于三维图形绘制的装置和方法制造方法及图纸

技术编号:26169922 阅读:22 留言:0更新日期:2020-10-31 13:35
本发明专利技术涉及大型三维图形绘制的装置和方法,特别是涉及为软件界面的三维图形控件提供界面布局的装置和方法。本发明专利技术提供一种三维图形绘制的方法,包括如下步骤:利用Qt平台的原生控件进行三维图形绘制;对每个原生(Native)控件创建一个非原生(Alien)控件分身;设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;所述原生控件的非原生分身配合其他非原生控件,接受Qt布局管理,完成三维图形绘制。利用了本发明专利技术的装置和方法,在绘制三维图形的过程中能够进行正常的Qt界面布局管理,用于复杂三维图形绘制的Native控件也能像一般的Alien控件一样,正常受到Qt界面布局管理,并且绘制性能不受影响,二者得以兼顾。

【技术实现步骤摘要】
用于三维图形绘制的装置和方法
本专利技术涉及大型三维图形绘制的装置和方法,特别是涉及为软件界面的三维图形控件提供界面布局的装置和方法。
技术介绍
绘制三维图在工程设计和绘图过程中,三维图形应用越来越广泛。在工程领域,虚拟制造技术、工艺过程数值模拟和仿真技术等,都是以三维图形为基础的。在操作系统中,原生(“Native”)控件,是指占用操作系统窗口句柄的一类控件,这类控件拥有独立的内存绘制区,与其它控件的绘制无关。Qt的界面设计使用了布局(Layout)功能。所谓布局,就是界面上组件的排列方式,使用布局可以使组件有规则地分布,并且随着窗体大小变化自动地调整大小和相对位置。而Qt中为了性能优化,设计了一类不占操作系统窗口句柄的非原生(“Alien”)控件,这类控件不单独占用操作系统窗口句柄,而是与同类的其它控件共同使用一个内存绘制区,所有控件同步绘制到屏幕上。这是Qt中默认的控件实现方式,同时也是一种现代化的界面控件实现方式。然而,对于三维图形控件来说,由于要满足其复杂的三维图形绘制需求(有别于一般的按钮、工具面板等简单控件的二维绘制),它通常是一种Native控件。Qt提供了类QLayout进行布局管理,能解决当修改某个控件的位置时,其他控件也需要进行调整的这一情况。常用的布局管理有QVBoxLayout、QHBoxLayout、QFormLayout、QGridLayout。另外Qt还提供了分隔器(QSplitter)控件布局管理方式,以支持交互式的自由调节布局中各部分控件的大小。然而,上述这些布局管理方式都无法对同时存在Native和Alien两类控件的情况进行正确的管理,造成控件位置错乱。目前,对于上述问题,Qt提供的解决方案是把界面中所有的Alien控件都转换成Native控件,这种做法的缺点是造成大大小小的每个控件都占用操作系统窗口句柄,增加了系统资源占用和绘制代价。还有另一种方法是不给三维图形控件申请独立绘制区,而是通过离屏渲染的方式,将GPU中的三维图形绘制结果传回内存再与Alien控件一起绘制,这种方式的缺点则是多了一道将绘制结果在显存和内存之间来回传递的工序,降低了三维图形的绘制性能。因此需要让Qt界面布局管理机制在Native控件和Alien控件同时出现的情况下能正常工作的装置和方法,使得三维图形控件的绘制性能不受影响的同时,又能表现得如普通控件一样,受到正常的界面布局管理。
技术实现思路
本专利技术提供了一种三维图形绘制的装置和方法,特别涉及为软件界面的三维图形控件提供界面布局的装置和方法。本专利技术提供一种三维图形绘制的方法,包括如下步骤:利用Qt平台的原生控件进行三维图形绘制;对每个原生控件创建一个非原生控件分身;设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;所述原生控件的非原生分身配合其他非原生控件,接受Qt布局管理,完成三维图形绘制。本专利技术的一个方面,其中设定所述非原生控件分身,使所述原生控件的非原生分身在大小上与原生控件同步的步骤中,在非原生控件分身的尺寸大小发生变化时,将原生控件的尺寸大小也设置为所述分身的大小。本专利技术的另一个方面,其中设定所述非原生控件分身,使所述原生控件的非原生控件分身在位置上与原生控件同步的步骤中,在所述非原生控件分身(105)相对于原生控件控件(101)的父结点的位置发生变化时,将所述原生控件(101)设置为与所述非原生控件分身(105)同样的位置本专利技术的再一个方面,其中:设定所述非原生控件分身,使所述原生控件的非原生分身在位置上与原生控件同步的步骤中还包括:设置Qt事件过滤器(205),用于监测所述非原生控件分身(105)及其所有非原生控件祖先结点,并分别对不同的事件做出不同的处理:针对位置变化事件(QEvent::Move):同步设置所述原生控件(101)的位置;针对父结点即将改变事件(QEvent::ParentAboutToChange):解除所有非原生控件祖先结点对该事件过滤器(205)的关联;针对父结点已改变事件(QEvent::ParentChange):对所有新的非原生控件祖先结点关联该事件过滤器(205)。本专利技术还提供一种三维图形绘制的装置,包括下列装置:绘制模块,利用Qt平台的原生控件进行三维图形绘制;分身创建模块,对每个原生控件创建一个非原生控件分身;同步模块,设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;配合模块,所述原生控件的非原生分身配合其他非原生控件,接受Qt布局管理,完成三维图形绘制。本专利技术的再一个方面提供了一种Qt界面布局的方法,包括如下步骤:对每个原生控件创建一个非原生控件分身;设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;所述原生控件的非原生分身配合其他非原生控件,完成Qt界面管理。利用了本专利技术的装置和方法,在绘制三维图形的过程中能够进行正常的Qt界面布局管理,应用了本技术后,用于复杂三维图形绘制的Native控件也能像一般的Alien控件一样,正常受到Qt界面布局管理,并且绘制性能不受影响,二者得以兼顾。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本专利技术的一些实例,对于本领域普通技术人员来讲,在不付出创新性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术的三维绘制装置中Native控件及其Alien分身的父控件示意图;图2为本专利技术的三维绘制方法中实现位置同步的步骤示意图;图3为本专利技术的三维绘制方法的流程图;图4示意性地示出了用于执行根据本专利技术的方法的服务器的框图;图5示意性地示出了用于保持或者携带实现根据本专利技术的方法的程序代码的存储单元;图6为本专利技术的三维绘制方法示例的界面布局示意图。具体实施方式以下阐述的是当前被认为是所要求保护的专利技术的优选实施例或最佳表示性示例的内容。仔细考虑了对实施例和优选实施例的将来和现在的表示或修改,在功能、目的、结构或结果方面作出实质性改变的任何变更或修改,都旨在被本专利的权利要求所涵盖。现在将参考附图仅以举例的方式描述本专利技术的优选实施例。在说明本专利技术的实施例之前,先解释几个出现在文中的名词:Qt:是一个跨平台应用程序和UI开发框架。使用Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt界面布局管理:对界面的布局管理主要涉及界面中部件的整齐排列或使界面适应窗口的大小变化,其中一种解决方案为布局管理器QLayout,布局管理器能根据界面组件进行布局管理:(1)能够自动排列窗口中的界面组件;(2)窗口变化后能自动更新界面的大小。还有一种方案为分割器QSplitter,它支持以交互式的方式自由调节布局中各部分控件所占本文档来自技高网
...

【技术保护点】
1.一种三维图形绘制的方法,包括如下步骤:/n利用Qt平台的原生控件进行三维图形绘制;/n对每个原生控件创建一个非原生控件分身;/n设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;/n所述原生控件的非原生分身配合其他非原生控件,接受Qt布局管理,完成三维图形绘制。/n

【技术特征摘要】
1.一种三维图形绘制的方法,包括如下步骤:
利用Qt平台的原生控件进行三维图形绘制;
对每个原生控件创建一个非原生控件分身;
设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;
所述原生控件的非原生分身配合其他非原生控件,接受Qt布局管理,完成三维图形绘制。


2.如权利要求1所述的方法,其中:
设定所述非原生控件分身,使所述原生控件的非原生分身在大小上与原生控件同步的步骤中,在非原生控件分身的尺寸大小发生变化时,将原生控件的尺寸大小也设置为所述分身的大小。


3.如权利要求1所述的方法,其中:
设定所述非原生控件分身,使所述原生控件的非原生控件分身在位置上与原生控件同步的步骤中,在所述非原生控件分身(105)相对于原生控件(101)的父结点的位置发生变化时,将所述原生控件(101)设置为与所述非原生控件分身(105)同样的位置。


4.如权利要求3所述的方法,其中:
设定所述非原生控件分身,使所述原生控件的非原生分身在位置上与原生控件同步的步骤中还包括:
设置Qt事件过滤器(205),用于监测所述非原生控件分身(105)及其所有非原生控件祖先结点,并分别对不同的事件做出不同的处理:
针对位置变化事件(QEvent::Move):同步设置所述原生控件(101)的位置;
针对父结点即将改变事件(QEvent::ParentAboutToChange):解除所有非原生控件祖先结点对该事件过滤器(205)的关联;
针对父结点已改变事件(QEvent::ParentChange):对所有新的非原生控件祖先结点关联该事件过滤器(205)。


5.一种三维图形绘制的装置,包括下列装置:
绘制模块,利用Qt平台的原生控件进行三维图形绘制;
分身创建模块,对每个原生控件创建一个非原生控件分身;
同步模块,设定所述非原生控件分身,使所述原生控件的非原生控件分身在尺寸大小和位置上分别与原生控件同步;
配合模块,所述原生控件的非原生分身配合其他非原生控件,接受Qt布局管理,完成三维图形绘制。


6.如权利要求5所述的装置,其中:
同步模块中,在非原生控件分身的尺寸大小发生变化时,将原生控件的尺寸大小也设置为所述分身的大小。


7.如权利要求5所述的装置,其中:
同步模块中,在所述非原生控件分身(10...

【专利技术属性】
技术研发人员:陈治中
申请(专利权)人:北京庚图科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1