CN104166552A - 一种可移植内存位图图形库使用方法 - Google Patents
一种可移植内存位图图形库使用方法 Download PDFInfo
- Publication number
- CN104166552A CN104166552A CN201410400766.9A CN201410400766A CN104166552A CN 104166552 A CN104166552 A CN 104166552A CN 201410400766 A CN201410400766 A CN 201410400766A CN 104166552 A CN104166552 A CN 104166552A
- Authority
- CN
- China
- Prior art keywords
- shape library
- memory bitmap
- code
- platform
- project
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种可移植内存位图图形库使用方法,所述包括方法包括:首先基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库,然后创建操作平台相关代码,用EngineGraphic进行封装,最后利用所述内存位图图形库完成项目图形绘制,实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改较少的代码即可的技术效果。
Description
技术领域
本发明涉及计算机图形学研究领域,尤其涉及一种可移植内存位图图形库使用方法。
背景技术
图形库在计算机绘图中起着重要的作用,随着可以的进步和发展,图形库的应用日益广泛,如果项目需要用到图形绘制相关的功能,那么就需要用到平台相关图形库,如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封装平台相关代码,接口都统一起来,使得内存位图图形库来调用,所以,有效解决了现有的平台下的图形库存在要维护各个版本的代码,且每个平台下图形库的调用都大不一样,加大了项目的维护及开发,图形库绘制速度较慢的技术问题,进而实现了图形绘制效率比一般平台的效率更高,需要图形绘制的大型项中使用这种方法,可使得多达十万甚至百万行代码的项目转移到其他平台只需要修改较少的代码即可的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种可移植内存位图图形库使用方法,其特征在于,所述包括方法包括:
基于基本图形学算法和内存中的二进制数据流,建立内存位图图形库;
创建操作平台相关代码,用EngineGraphic进行封装;
利用所述内存位图图形库完成项目图形绘制。
2.根据权利要求1所述的方法,其特征在于,所述操作平台包括但不限于:Windows操作平台、Android操作平台、VxWorks操作平台。
3.根据权利要求1所述的方法,其特征在于,所述基本图形学算法包括但不限于:直线算法、画圆算法、填充算法。
4.根据权利要求1所述的方法,其特征在于,所述内存位图图形库的功能包括但不限于:多边形透明拷贝、模式多边形透明拷贝、矩形绘制、三角形绘制、透明拷贝位图、矩形填充、十字叉多边形填充。
5.根据权利要求1所述的方法,其特征在于,当在Windows操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
使用编译器把图形库源代码编译动态库dll文件;
把编译后的所述dll文件和后缀名h的头文件作为必要的文件放入项目;
在所述项目中使用头文件中的函数。
6.根据权利要求1所述的方法,其特征在于,当在Android操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
根据源代码建立JNI相应接口代码;
根据所要运行的android版本,编译android代码,获取所属的后缀名为so动态库;
添加对应的java接口代码;
在项目中使用所述java接口代码。
7.根据权利要求1所述的方法,其特征在于,当在VxWorks操作平台下时,所述利用所述内存位图图形库完成项目图形绘制具体包括:
使用编译器把图形库源代码编译动态库a文件;
把编译后的所述a文件和后缀名h的头文件作为必要的文件放入项目;
在所述项目中使用头文件中的函数。
8.根据权利要求1所述的方法,其特征在于,所述创建操作平台相关代码,用EngineGraphic进行封装具体包括:
在项目中创建类CEngineGraphic;
使用平台图形库中的函数封装平台相关代码到CEngineGraphic中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410400766.9A CN104166552B (zh) | 2014-08-15 | 2014-08-15 | 一种可移植内存位图图形库使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410400766.9A CN104166552B (zh) | 2014-08-15 | 2014-08-15 | 一种可移植内存位图图形库使用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104166552A true CN104166552A (zh) | 2014-11-26 |
CN104166552B CN104166552B (zh) | 2017-10-13 |
Family
ID=51910386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410400766.9A Active CN104166552B (zh) | 2014-08-15 | 2014-08-15 | 一种可移植内存位图图形库使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104166552B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201493A (zh) * | 2016-06-30 | 2016-12-07 | 成都金本华电子有限公司 | 基于vxWorks的ucGui系统 |
CN107315599A (zh) * | 2016-04-27 | 2017-11-03 | 龙芯中科技术有限公司 | 图形库提取方法及装置 |
CN107450897A (zh) * | 2016-06-01 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 图形引擎的跨平台移植方法和装置 |
CN107818588A (zh) * | 2016-09-12 | 2018-03-20 | 深圳市鸿合创新信息技术有限责任公司 | Android系统基于JNI多线程调用Qt绘图的装置和方法 |
CN111562870A (zh) * | 2020-04-17 | 2020-08-21 | 深圳震有科技股份有限公司 | 地图点位图标扩展处理方法及装置 |
CN112748921A (zh) * | 2020-12-30 | 2021-05-04 | 天地伟业技术有限公司 | 一种嵌入式设备中低计算量gui渲染方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508648A (zh) * | 2011-09-23 | 2012-06-20 | 北京像素软件科技股份有限公司 | 一种图形引擎实现方法 |
CN103870251A (zh) * | 2012-12-07 | 2014-06-18 | 广州爱游信息科技有限公司 | 从psd文件快速生成游戏ui功能面板的方法及装置 |
-
2014
- 2014-08-15 CN CN201410400766.9A patent/CN104166552B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508648A (zh) * | 2011-09-23 | 2012-06-20 | 北京像素软件科技股份有限公司 | 一种图形引擎实现方法 |
CN103870251A (zh) * | 2012-12-07 | 2014-06-18 | 广州爱游信息科技有限公司 | 从psd文件快速生成游戏ui功能面板的方法及装置 |
Non-Patent Citations (5)
Title |
---|
ALEX: "MFC中的GDI绘图", 《HTTP://WWW.CNBLOGS.COM/WEIQUBO/ARCHIVE/2009/12/24/1930029.HTML》 * |
GIS_: "Flex中ByteArray与BitmapData互相转换实现图片的二进制保存与复原", 《HTTP://BLOG.CSDN.NET/GIS_/ARTICLE/DETAILS/6689013》 * |
HUAZAICOLA: "Vxworks中封装函数库的方法及库文件使用", 《VXWORKS中封装函数库的方法及库文件使用》 * |
佚名: "Android库so文件及skia函数的调用", 《HTTP://MOBILE.51CTO.COM/ANDROID-266606.HTM》 * |
周祖洋等: "Windows下的位图在VxWorks中大字显示的实现", 《应用科技》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315599A (zh) * | 2016-04-27 | 2017-11-03 | 龙芯中科技术有限公司 | 图形库提取方法及装置 |
CN107450897A (zh) * | 2016-06-01 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 图形引擎的跨平台移植方法和装置 |
CN107450897B (zh) * | 2016-06-01 | 2021-03-02 | 阿里巴巴集团控股有限公司 | 图形引擎的跨平台移植方法和装置 |
CN106201493A (zh) * | 2016-06-30 | 2016-12-07 | 成都金本华电子有限公司 | 基于vxWorks的ucGui系统 |
CN107818588A (zh) * | 2016-09-12 | 2018-03-20 | 深圳市鸿合创新信息技术有限责任公司 | Android系统基于JNI多线程调用Qt绘图的装置和方法 |
CN107818588B (zh) * | 2016-09-12 | 2021-12-28 | 深圳市鸿合创新信息技术有限责任公司 | Android系统基于JNI多线程调用Qt绘图的装置和方法 |
CN111562870A (zh) * | 2020-04-17 | 2020-08-21 | 深圳震有科技股份有限公司 | 地图点位图标扩展处理方法及装置 |
CN112748921A (zh) * | 2020-12-30 | 2021-05-04 | 天地伟业技术有限公司 | 一种嵌入式设备中低计算量gui渲染方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104166552B (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104166552A (zh) | 一种可移植内存位图图形库使用方法 | |
CN112070871B (zh) | 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质 | |
CN111290778B (zh) | Ai模型的包装方法、平台及电子设备 | |
CN103677789B (zh) | 基于grid组件的列表数据展现方法及系统 | |
US10255650B2 (en) | Graphics processing using dynamic resources | |
CN107077337A (zh) | 用于执行根据两个指令集架构编译的应用编码的系统和方法 | |
CN106415488A (zh) | 将泛型类分解成层 | |
US10853079B2 (en) | Dependency-based streamlined processing | |
CN103729186A (zh) | 一种批量生成多渠道apk文件包的方法 | |
CN103425491A (zh) | 一种游戏引擎 | |
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及系统 | |
CN105487907A (zh) | 一种差分包的制作方法和装置 | |
JP2018517986A (ja) | 階層的サブルーチン情報を含む中間コードからのオブジェクトコードの生成 | |
JP2019508800A (ja) | カラートゥイーンアニメーションを実現するための方法及び装置 | |
CN102741811A (zh) | 改善基于模板的JavaScript小部件的性能 | |
CN104680421A (zh) | 一种可伸缩矢量图形svg显示方法及装置 | |
US20150026651A1 (en) | Preventing double patterning odd cycles | |
CN111090438A (zh) | 一种基于kubernetes的FPGA虚拟化训练的方法、设备及介质 | |
CN103744673A (zh) | 一种基于iOS平台的资源配置方法 | |
CN103150154A (zh) | 一种应用程序插件的实现方法及装置 | |
CN105005495A (zh) | 一种游戏引擎 | |
CN106296782B (zh) | 一种文字渲染方法和文字渲染装置 | |
CN104985939A (zh) | 一种激光打标机控制方法和激光打标机 | |
CN105867944A (zh) | Web前端数据操作层及其实现方法 | |
CN103345534A (zh) | 一种动态图处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |