一种绘图资源的管理方法及系统技术方案

技术编号:2918697 阅读:134 留言:0更新日期:2012-04-11 18:40
本发明专利技术适用于计算机应用领域,提供了一种绘图资源的管理方法及系统,所述方法包括下述步骤:声明绘图资源对象并设置绘图资源对象的创建参数;根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象。所述系统包括:绘图资源池、绘图资源对象声明单元、绘图资源对象创建参数设置单元、绘图资源关键字生成单元以及绘图资源存取单元。在本发明专利技术实施例中,根据绘图资源创建参数生成唯一标识绘图资源对象的绘图资源关键字,将绘图资源的重复占用减到最少。同时对绘图资源对象采用了绘图资源缓存和释放机制,减少了绘图资源频繁创建的几率,提高了程序的性能。

【技术实现步骤摘要】

本专利技术属于计算机应用领域,尤其涉及一种绘图资源的管理方法及系统
技术介绍
在基于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;}绘图资源池主要用于对创建的绘图资源对象进行缓存,避免本文档来自技高网...

【技术保护点】
一种绘图资源的管理方法,其特征在于,所述方法包括下述步骤:声明绘图资源对象并设置绘图资源对象的创建参数;根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;根据所述绘图资源关键字从绘图资源池中 取出所述绘图资源对象。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢昕虬
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

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

1