公开/公告号CN104166552A
专利类型发明专利
公开/公告日2014-11-26
原文格式PDF
申请/专利权人 成都天奥信息科技有限公司;
申请/专利号CN201410400766.9
申请日2014-08-15
分类号G06F9/44(20060101);
代理机构成都行之专利代理事务所(普通合伙);
代理人梁田
地址 610000 四川省成都市高新西区新业路天奥科技产业园
入库时间 2023-12-17 01:39:31
法律状态公告日
法律状态信息
法律状态
2017-10-13
授权
授权
2014-12-24
实质审查的生效 IPC(主分类):G06F9/44 申请日:20140815
实质审查的生效
2014-11-26
公开
公开
技术领域
本发明涉及计算机图形学研究领域,尤其涉及一种可移植内存位图图形库使用方法。
背景技术
图形库在计算机绘图中起着重要的作用,随着可以的进步和发展,图形库的应用日益广泛,如果项目需要用到图形绘制相关的功能,那么就需要用到平台相关图形库,如Windows下的MFC库,WxWidget库、Android平台下的skia库、VxWorks平台下的windml图形库。而当项目需要同时开发几个平台下的,每个平台下都需要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发。
并且在windows下开发复杂度高的且处理大量图形的项目时,windows自带的图形库就显得有点力不从心了,绘制速度跟不上。
综上所述,本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
在现有技术中,由于当项目需要同时开发几个平台下的,每个平台下都需要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,且在windows下开发复杂度高的且处理大量图形的项目时,windows自带的图形库就显得有点力不从心了,绘制速度跟不上,所以,现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题。
发明内容
本发明提供了一种可移植内存位图图形库使用方法,解决了现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题,实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改区区几百行代码即可的技术效果。
为解决上述技术问题,本申请实施例提供了一种可移植内存位图图形库使用方法,所述包括方法包括:
首先,基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库;
然后,创建操作平台相关代码,用EngineGraphic进行封装;
然后,利用所述内存位图图形库完成项目图形绘制。
其中,所述操作平台包括但不限于:Windows操作平台、Android操作平台、VxWorks操作平台。
其中,所述基本图形学算法包括但不限于:直线算法、画圆算法、填充算法。
其中,所述内存位图图形库的功能包括但不限于:多边形透明拷贝、模式多边形透明拷贝、矩形绘制、三角形绘制、透明拷贝位图、矩形填充、十字叉多边形填充。
其中,当在Windows操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
使用编译器把图形库源代码编译动态库dll文件;
把编译后的所述dll文件和后缀名h的头文件作为必要的文件放入项目;
在所述项目中使用头文件中的函数。
其中,当在Android操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
根据源代码建立JNI相应接口代码;
根据所要运行的android版本,编译android代码,获取所属的后缀名为so动态库;
添加对应的java接口代码;
在项目中使用所述java接口代码。
其中,当在VxWorks操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
使用编译器把图形库源代码编译动态库a文件;
把编译后的所述a文件和后缀名h的头文件作为必要的文件放入项目;
在所述项目中使用头文件中的函数。
其中,所述创建操作平台相关代码,用EngineGraphic进行封装具体包括:
在项目中创建类CEngineGraphic;
使用平台图形库中的函数封装平台相关代码到CEngineGraphic中。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
由于采用了首先基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库,然后创建操作平台相关代码,用EngineGraphic进行封装,最后利用所述内存位图图形库完成项目图形绘制的技术方案,即项目只需要调用内存位图图形库,这样移植的时候就可以不需要修改图形相关代码了,而另外用一个EngineGraphic封装平台相关代码,接口都统一起来,使得内存位图图形库来调用,所以,有效解决了现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题,进而实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改区区几百行代码即可的技术效果。
附图说明
图1是本申请实施例一中可移植内存位图图形库使用方法的流程图;
图2是本申请实施例一中可移植内存位图图形库在项目中的位置示意图。
具体实施方式
本发明提供了一种可移植内存位图图形库使用方法,解决了现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题,实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改较少的代码即可的技术效果。
申请实施中的技术方案为解决上述技术问题。总体思路如下:
采用了首先基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库,然后创建操作平台相关代码,用EngineGraphic进行封装,最后利用所述内存位图图形库完成项目图形绘制的技术方案,即项目只需要调用内存位图图形库,这样移植的时候就可以不需要修改图形相关代码了,而另外用一个EngineGraphic封装平台相关代码,接口都统一起来,使得内存位图图形库来调用,所以,有效解决了现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题,进而实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改较少的代码即可的技术效果。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
实施例一:
在实施例一中,提供了一种可移植内存位图图形库使用方法,请参考图1-图2,所述包括方法包括:
S10,基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库;
S20,创建操作平台相关代码,用EngineGraphic进行封装;
S30,利用所述内存位图图形库完成项目图形绘制。
其中,在本申请实施例中,所述操作平台包括但不限于:Windows操作平台、Android操作平台、VxWorks操作平台。
其中,在本申请实施例中,所述基本图形学算法包括但不限于:直线算法、画圆算法、填充算法。
其中,在本申请实施例中,所述内存位图图形库的功能包括但不限于:多边形透明拷贝、模式多边形透明拷贝、矩形绘制、三角形绘制、透明拷贝位图、矩形填充、十字叉多边形填充。
其中,在本申请实施例中,当在Windows操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
使用编译器把图形库源代码编译动态库dll文件;
把编译后的所述dll文件和后缀名h的头文件作为必要的文件放入项目;
在所述项目中使用头文件中的函数。
其中,在本申请实施例中,当在Android操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
根据源代码建立JNI相应接口代码;
根据所要运行的android版本,编译android代码,获取所属的后缀名为so动态库;
添加对应的java接口代码;
在项目中使用所述java接口代码。
其中,在本申请实施例中,当在VxWorks操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
使用编译器把图形库源代码编译动态库a文件;
把编译后的所述a文件和后缀名h的头文件作为必要的文件放入项目;
在所述项目中使用头文件中的函数。
其中,在本申请实施例中,所述创建操作平台相关代码,用EngineGraphic进行封装具体包括:
在项目中创建类CEngineGraphic;
使用平台图形库中的函数封装平台相关代码到CEngineGraphic中。
其中,在实际应用中,基于计算机图形学中的内容,里面包括了直线算法、画圆算法,填充算法等,有了这些基本算法后,即可衍生出其他许多图形算法包括虚线绘制、透明拷贝等诸多算法,以此来构成一个图形库。
上述描述的诸多图形算法实际上操作的都是二进制数据流,因此效率非常高效,可以把二进制数据流看成一个width*height的屏幕。一个点占四个字节(A、R、G、B),因此一张width*height的屏幕可以抽象看成是字节数为4*width*height的二进制数据流。至此所描述的都是平台无关的,只是通过抽象二进制数据流为一张位图,通过计算机图形学中的算法来操作位图以此达到图形渲染的效果。
而通过绘制后的内存位图使用每个平台的图形库与实际屏幕相关联。几乎每个平台都有一个类似的函数SetBitmapBits,参数是字节流及字节数。如:
MFC中的CBitmap类有函数SetBitmapBits(unsigned char *pByte,int nBytes);
Android中的源代码中的skia库中可以获得位图的地址,通过memcpy即可达到内存位图拷贝的目的:memcpy(SkBitmap->getPixels(), pByte, nByte);
VxWorks中windml库的有函数uglBitmapWrite。
请参考图2,图2 内存位图在项目中的位置,如图2所示:项目只需要调用内存位图图形库,这样移植的时候就可以不需要修改图形相关代码了。而另外用一个EngineGraphic封装平台相关代码,接口都统一起来,使得内存位图图形库来调用。
因此使用了这种方法过后,图形绘制效率比一般平台的效率更高。需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改区区几百行代码即可。
其中,在实际应用中,应用本申请实施例中的可移植内存位图图形库与传统的操作平台图形库效率比较,其中,与Android平台下效率比较,如表1所示:
从表1中可以看到使用了内存位图库在JNI层提高了一倍左右的渲染效率。
在windows下MFC平台的效率比较,比较绘制直线以及圆的绘制,如表2所示:
其中,从表2中可以看到直线绘制的效率是5倍左右。而圆的绘制效率也是1倍。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
由于采用了首先基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库,然后创建操作平台相关代码,用EngineGraphic进行封装,最后利用所述内存位图图形库完成项目图形绘制的技术方案,即项目只需要调用内存位图图形库,这样移植的时候就可以不需要修改图形相关代码了,而另外用一个EngineGraphic封装平台相关代码,接口都统一起来,使得内存位图图形库来调用,所以,有效解决了现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题,进而实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改较少的代码即可的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
机译: 一种可移植的医疗设备,能够对诊断数据进行优先级排序并分配相同的内存
机译: 一种可移植的医疗设备,能够对诊断数据进行优先级排序并分配相同的内存
机译: 一种与1-t兼容的内存sram的使用方法和装置。