一种绘图资源的管理方法及系统的制作方法

文档序号:6573724阅读:200来源:国知局
专利名称:一种绘图资源的管理方法及系统的制作方法
技术领域
本发明属于计算机应用领域,尤其涉及一种绘图资源的管理方法及系统。
背景技术
在基于Windows操作系统桌面应用程序开发过程中,由于系统提供的图形设备接口(Graphic Device Interface,GDI)资源(也称为绘图资源)有限,绘图资源被使用后需要立即被释放,否则当绘图资源占有过高时系统会出现异常。为了防止绘图资源泄露,一般使用类封装绘图资源,当类的生命周期结束时,调用析构函数释放绘图资源。但当需要创建很多同样的绘图资源时,将占用很多重复的绘图资源。如要给窗口画上一个白色背景时,创建一个绘图资源,当创建很多个这样的窗口时就会创建很多同样的绘图资源。绘图资源的重复创建对程序运行速度有很大影响,特别的,当绘图资源的创建涉及磁盘输入/输出(Input/Output,I/O)时,频繁重复创建绘图资源会对程序运行速度有很大影响。
为了解决绘图资源重复占用以及绘图资源频繁创建的问题。最通常的方式是在使用绘图资源前创建该绘图资源,给该绘图资源命名,然后在使用这些绘图资源时,通过名字取出。这要求绘图资源在还没被使用时就被创建,而且为减少开发人员的编程负担,只有确定会很常用的绘图资源才会命名,并用在合适的地方。这将增加开发人员的负担,同时不能完全避免绘图资源重复占用的问题。

发明内容
本发明实施例的目的在于提供一种绘图资源的管理方法及系统,旨在解决现有技术中绘图资源频繁重复创建、绘图资源释放不及时的问题。
本发明实施例是这样实现的,一种绘图资源的管理方法,所述方法包括下述步骤声明绘图资源对象并设置绘图资源对象的创建参数;根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象。
本发明实施例的另一目的在于提供一种绘图资源的管理系统,所述系统包括绘图资源池,用于存储绘图资源对象;绘图资源对象声明单元,用于声明绘图资源对象;绘图资源对象创建参数设置单元,用于设置绘图资源对象的创建参数;绘图资源关键字生成单元,用于根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;以及绘图资源存取单元,用于根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象以及将创建的绘图资源对象存到所述绘图资源池。
在本发明实施例中,通过根据用户设置的绘图资源创建参数生成唯一标识相同绘图资源的绘图关键字,避免了绘图资源池中绘图资源重复占用空间,从而将绘图资源的占用减到最少。


图1是本发明实施例提供的优化绘图资源管理方法的实现流程图;图2是本发明实施例提供的优化绘图资源管理系统的结构图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,根据资源创建参数生成资源唯一关键字来标示相同绘图资源,避免了绘图资源的重复,从而将绘图资源的占用降到最少,减少了绘图资源的创建时间,提高了程序的性能。同时绘图资源池对绘图资源进行统一管理时,采用缓存机制和释放机制来进一步减少绘图资源的反复创建,来达到更优性能表现。
图1示出了本发明实施例提供的优化绘图资源管理方法的步骤流程。
在步骤S101中,对用户需要使用的绘图资源对象进行声明。在本发明实施例中以画刷为例,则用户在使用画刷前,声明一画刷对象。该画刷对象具有多个描述属性,如颜色、粗细、线形等。
在步骤S102中,用户根据实际需要设置已声明的绘图资源对象的创建参数。不同类型的绘图资源其创建参数不同,用户根据实际需要,设置对象的创建参数,此创建参数为针对画刷的描述性属性设置的具体的值,表示具有不同效果的画刷。例如设置画刷绘图资源的创建参数如下所述m_crBrush =RGB(0,0,0);m_uBrushStyle=BS_SOLID;m_nHatch=HS_HORIZONTAL;其中m_crBrush表示画刷的颜色,m_uBrushStyle表示画刷的样式,m_nHatch表示画刷的风格。
在步骤S103中,根据用户设置的绘图资源对象的创建参数生成绘图资源关键字(Key),并根据绘图资源关键字判断绘图资源池中是否存在该绘图资源对象。由于不同绘图资源对象其创建参数有所区别,根据绘图资源创建参数生成的绘图资源关键字可以唯一的标识该绘图资源对象,用于区分其它绘图资源对象。由于不同类型的绘图资源的绘图描述性属性不同,因此针对不同绘图资源,生成绘图资源关键字的方法也不同。其中绘图资源是指桌面绘图使用的绘图对象,如画刷、画笔、图片、字体等。在本发明实施例中,以画刷为例,说明根据绘图资源创建参数生成绘图资源关键字的过程。将步骤S102中用户设置的画刷的创建参数组成一字符串,即根据画刷的创建参数生成的画刷的关键字为由画刷的创建参数组成的字符串。由于不同的画刷具有不同的创建参数,由各画刷的创建参数组成的字符串也有区别,可以唯一的标识画刷绘图资源。例如其实现代码可以为如下所述///生成画刷唯一KeyCString TDrawElmInfo<WTL::CBrush>::ToKey(){CString strKey=_T(″″);COLORREF crBrush=m_crBrush;UINT uStyle=m_uBrushStyle;LONG nHatch=m_nHatch; ///以上设置画刷的创建参数strKey.Format(_T(″Brush:%x:%x:%x″),crBrush,uStyle,nHatch); ///通过调用系统函数生成画刷关键字return strKey;}在绘图资源池中检索是否存在上述生成的绘图资源关键字来判断绘图资源池中是否存在该绘图资源对象。如果不存在,则转步骤S104。否则转步骤S105。
在步骤S104中,根据绘图资源创建参数创建该绘图资源对象并将创建的绘图资源对象保存到绘图资源池中。由于不同类型的绘图资源的描述性属性不同,因此针对不同绘图资源,创建绘图资源的方法也不同。在本发明实施例中,以画刷为例,说明根据绘图资源创建参数创建绘图资源的过程。
///创建画刷资源B OOL TDrawElmInfo<WTL::CBrush>::CreateElement(TObjectHandle<WTL::CBrush>hBrush){LOGBRUSH logBrush;
logBrush.lbColor=m_crBrush;///设置画刷的颜色为m_crBrushlogBrush.lbHatch=m_nHatch;///设置画刷的样式为m_nHatchlogBrush.lbStyle=m_uBrushStyle;///设置画刷的风格为m_uBrushStyle///其中m_crBrush、m_nHatch、m_uBrushStyle参数值用户在步骤S102中进行了设置hBrush->CreateBrushIndirect(&logBrush);///创建画刷资源return TRUE;}绘图资源池主要用于对创建的绘图资源对象进行缓存,避免绘图资源的频繁重复创建。在绘图资源池中,每一个绘图资源对象都和一个引用计数器结合,引用计数器指示绘图资源对象当前被使用的次数。当引用计数器的计数值为0时,通知绘图资源池可以删除该绘图资源对象,以释放其占用的绘图资源池的存储空间。在绘图资源池中,绘图资源对象的释放策略用户可以自定义。如可以采用最晚未使用先释放算法,也可以采用其它释放算法。
在绘图资源池中,对绘图资源对象采用了绘图资源缓存和释放机制,减少了绘图资源频繁创建的几率,提高了程序的性能。
在步骤S105中,根据绘图资源关键字从绘图资源池中取出绘图资源对象。
图2示出了本发明实施例提供的绘图资源的管理系统的结构组成。
绘图资源池11对创建的绘图资源对象进行缓存,以避免在绘图资源重复使用时的频繁重复创建。在绘图资源池中,每个绘图资源对象都对应一个引用计数器12,引用计数器12指示绘图资源对象的当前使用次数,当引用计数器12的计数值为0时,可以删除绘图资源池中与引用计数器对应的绘图资源对象,以释放绘图资源对象占用的空间。在绘图资源池中,绘图资源对象的释放策略用户可以自定义。例如当引用计数器12的计数值为0时,且绘图资源池的空间已满,则删除绘图资源对象;当引用计数器12的计数值为0时,但绘图资源池的空间未满,可以暂时不删除绘图资源对象,当以后需要使用时,不需要重复创建。
用户通过绘图对象声明单元13声明需要使用的绘图资源对象,其中绘图资源是指桌面绘图使用的绘图对象,如画刷、画笔、图片、字体等。针对具体的应用,通过绘图资源对象创建参数设置单元14设置合适的绘图资源对象的创建参数。绘图资源关键字生成单元15根据用户设置的绘图资源的创建参数,按照上述绘图资源关键字生成方法生成绘图资源关键字。该绘图资源关键字可以唯一的标识绘图资源对象。针对不同的绘图资源,其生成关键字的方法有所区别,用户可以根据需要扩展生成关键字的方法,以支持优化绘图资源管理系统在支持各种类型的绘图资源的平台的应用。
绘图资源对象判断单元16在绘图资源池11中检索是否存在绘图资源关键字生成单元15生成的绘图资源关键字。如果不存在,绘图资源对象创建单元17根据用户绘图资源对象创建参数设置单元14设置的绘图资源对象创建参数创建该绘图资源对象并保存到绘图资源池11中。针对不同的绘图资源,其创建方法有所区别,用户可以根据需要扩展或者自定义绘图资源创建方法,以支持优化绘图资源管理系统在支持各种类型的绘图资源的平台的应用。绘图资源对象的创建方法如上所述,在此不再赘述。如果存在该绘图资源对象,则取出该绘图资源对象完成相应功能。
综上所述,通过根据用户设置的绘图资源创建参数生成唯一标识相同绘图资源的方法,可以避免绘图资源池中绘图资源重复占用空间,从而将绘图资源的占用减到最少。同时在绘图资源池中,采用了绘图资源缓存和释放机制,减少了绘图资源频繁创建的几率,提高了程序的性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种绘图资源的管理方法,其特征在于,所述方法包括下述步骤声明绘图资源对象并设置绘图资源对象的创建参数;根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象。
2.如权利要求1所述的绘图资源的管理方法,其特征在于,在所述根据所述绘图资源关键字取出所述绘图资源对象的步骤之前还包括下述步骤根据所述绘图资源关键字判断绘图资源池中是否存在所述绘图资源对象。
3.如权利要求2所述的绘图资源的管理方法,其特征在于,所述判断结果为否时,所述方法还包括下述步骤根据所述绘图资源创建参数创建所述绘图资源对象,所述创建的绘图资源对象对应于一引用计数器,所述引用计数器指示所述绘图资源对象的当前使用次数。
4.如权利要求3所述的绘图资源的管理方法,其特征在于,当所述引用计数器的计数为0时,删除所述绘图资源对象。
5.一种绘图资源的管理系统,其特征在于,所述系统包括绘图资源池,用于存储绘图资源对象;绘图资源对象声明单元,用于声明绘图资源对象;绘图资源对象创建参数设置单元,用于设置绘图资源对象的创建参数;绘图资源关键字生成单元,用于根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;以及绘图资源存取单元,用于根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象以及将创建的绘图资源对象存到所述绘图资源池。
6.如权利要求5所述的优化绘图资源管理的系统,其特征在于,所述系统还包括绘图资源对象判断单元,用于根据所述绘图资源关键字生成单元生成的绘图资源关键字检索所述绘图资源池中是否存在所述绘图资源对象。
7.如权利要求5所述的绘图资源的管理系统,其特征在于,所述系统还包括引用计数器,用于指示所述绘图资源对象的当前使用次数。
8.如权利要求7所述的优化绘图资源管理的系统,其特征在于,所述系统还包括绘图资源对象创建单元,用于当所述绘图资源对象判断单元的判断结果为否时,根据所述绘图资源创建参数创建所述绘图资源对象。
全文摘要
本发明适用于计算机应用领域,提供了一种绘图资源的管理方法及系统,所述方法包括下述步骤声明绘图资源对象并设置绘图资源对象的创建参数;根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象。所述系统包括绘图资源池、绘图资源对象声明单元、绘图资源对象创建参数设置单元、绘图资源关键字生成单元以及绘图资源存取单元。在本发明实施例中,根据绘图资源创建参数生成唯一标识绘图资源对象的绘图资源关键字,将绘图资源的重复占用减到最少。同时对绘图资源对象采用了绘图资源缓存和释放机制,减少了绘图资源频繁创建的几率,提高了程序的性能。
文档编号G06F9/46GK101071390SQ20071007379
公开日2007年11月14日 申请日期2007年3月30日 优先权日2007年3月30日
发明者谢昕虬 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1