CN101071390A - 一种绘图资源的管理方法及系统 - Google Patents
一种绘图资源的管理方法及系统 Download PDFInfo
- Publication number
- CN101071390A CN101071390A CN 200710073797 CN200710073797A CN101071390A CN 101071390 A CN101071390 A CN 101071390A CN 200710073797 CN200710073797 CN 200710073797 CN 200710073797 A CN200710073797 A CN 200710073797A CN 101071390 A CN101071390 A CN 101071390A
- Authority
- CN
- China
- Prior art keywords
- drawing resource
- resources
- resource object
- graphics
- key word
- 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
Images
Landscapes
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明适用于计算机应用领域,提供了一种绘图资源的管理方法及系统,所述方法包括下述步骤:声明绘图资源对象并设置绘图资源对象的创建参数;根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象。所述系统包括:绘图资源池、绘图资源对象声明单元、绘图资源对象创建参数设置单元、绘图资源关键字生成单元以及绘图资源存取单元。在本发明实施例中,根据绘图资源创建参数生成唯一标识绘图资源对象的绘图资源关键字,将绘图资源的重复占用减到最少。同时对绘图资源对象采用了绘图资源缓存和释放机制,减少了绘图资源频繁创建的几率,提高了程序的性能。
Description
技术领域
本发明属于计算机应用领域,尤其涉及一种绘图资源的管理方法及系统。
背景技术
在基于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中用户设置的画刷的创建参数组成一字符串,即根据画刷的创建参数生成的画刷的关键字为由画刷的创建参数组成的字符串。由于不同的画刷具有不同的创建参数,由各画刷的创建参数组成的字符串也有区别,可以唯一的标识画刷绘图资源。例如其实现代码可以为如下所述:
///生成画刷唯一Key
CString 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_crBrush
logBrush.lbHatch=m_nHatch;///设置画刷的样式为m_nHatch
logBrush.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中。针对不同的绘图资源,其创建方法有所区别,用户可以根据需要扩展或者自定义绘图资源创建方法,以支持优化绘图资源管理系统在支持各种类型的绘图资源的平台的应用。绘图资源对象的创建方法如上所述,在此不再赘述。如果存在该绘图资源对象,则取出该绘图资源对象完成相应功能。
综上所述,通过根据用户设置的绘图资源创建参数生成唯一标识相同绘图资源的方法,可以避免绘图资源池中绘图资源重复占用空间,从而将绘图资源的占用减到最少。同时在绘图资源池中,采用了绘图资源缓存和释放机制,减少了绘图资源频繁创建的几率,提高了程序的性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1、一种绘图资源的管理方法,其特征在于,所述方法包括下述步骤:
声明绘图资源对象并设置绘图资源对象的创建参数;
根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;
根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象。
2、如权利要求1所述的绘图资源的管理方法,其特征在于,在所述根据所述绘图资源关键字取出所述绘图资源对象的步骤之前还包括下述步骤:
根据所述绘图资源关键字判断绘图资源池中是否存在所述绘图资源对象。
3、如权利要求2所述的绘图资源的管理方法,其特征在于,所述判断结果为否时,所述方法还包括下述步骤:
根据所述绘图资源创建参数创建所述绘图资源对象,所述创建的绘图资源对象对应于一引用计数器,所述引用计数器指示所述绘图资源对象的当前使用次数。
4、如权利要求3所述的绘图资源的管理方法,其特征在于,当所述引用计数器的计数为0时,删除所述绘图资源对象。
5、一种绘图资源的管理系统,其特征在于,所述系统包括:
绘图资源池,用于存储绘图资源对象;
绘图资源对象声明单元,用于声明绘图资源对象;
绘图资源对象创建参数设置单元,用于设置绘图资源对象的创建参数;
绘图资源关键字生成单元,用于根据所述绘图资源对象的创建参数生成唯一标识所述绘图资源对象的绘图资源关键字;以及
绘图资源存取单元,用于根据所述绘图资源关键字从绘图资源池中取出所述绘图资源对象以及将创建的绘图资源对象存到所述绘图资源池。
6、如权利要求5所述的优化绘图资源管理的系统,其特征在于,所述系统还包括:
绘图资源对象判断单元,用于根据所述绘图资源关键字生成单元生成的绘图资源关键字检索所述绘图资源池中是否存在所述绘图资源对象。
7、如权利要求5所述的绘图资源的管理系统,其特征在于,所述系统还包括:
引用计数器,用于指示所述绘图资源对象的当前使用次数。
8、如权利要求7所述的优化绘图资源管理的系统,其特征在于,所述系统还包括:
绘图资源对象创建单元,用于当所述绘图资源对象判断单元的判断结果为否时,根据所述绘图资源创建参数创建所述绘图资源对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100737978A CN100468346C (zh) | 2007-03-30 | 2007-03-30 | 一种绘图资源的管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100737978A CN100468346C (zh) | 2007-03-30 | 2007-03-30 | 一种绘图资源的管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101071390A true CN101071390A (zh) | 2007-11-14 |
CN100468346C CN100468346C (zh) | 2009-03-11 |
Family
ID=38898624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100737978A Active CN100468346C (zh) | 2007-03-30 | 2007-03-30 | 一种绘图资源的管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100468346C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999518A (zh) * | 2011-09-15 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 一种图形设备接口资源管理方法和装置 |
CN105608017A (zh) * | 2015-12-11 | 2016-05-25 | 中国航空工业集团公司西安航空计算技术研究所 | 一种存储器的控制电路及方法 |
CN106708623A (zh) * | 2016-11-23 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种对象资源处理方法、装置及系统 |
CN103617091B (zh) * | 2013-12-18 | 2017-06-16 | 深圳市道通科技股份有限公司 | 硬件资源动态分配的实现方法及装置 |
CN107360317A (zh) * | 2017-06-29 | 2017-11-17 | 努比亚技术有限公司 | 应用程序资源泄露的检测方法及移动终端、存储介质 |
-
2007
- 2007-03-30 CN CNB2007100737978A patent/CN100468346C/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999518A (zh) * | 2011-09-15 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 一种图形设备接口资源管理方法和装置 |
CN102999518B (zh) * | 2011-09-15 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种图形设备接口资源管理方法和装置 |
CN103617091B (zh) * | 2013-12-18 | 2017-06-16 | 深圳市道通科技股份有限公司 | 硬件资源动态分配的实现方法及装置 |
CN105608017A (zh) * | 2015-12-11 | 2016-05-25 | 中国航空工业集团公司西安航空计算技术研究所 | 一种存储器的控制电路及方法 |
CN106708623A (zh) * | 2016-11-23 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种对象资源处理方法、装置及系统 |
CN107360317A (zh) * | 2017-06-29 | 2017-11-17 | 努比亚技术有限公司 | 应用程序资源泄露的检测方法及移动终端、存储介质 |
CN107360317B (zh) * | 2017-06-29 | 2020-12-01 | 湖南胜云光电科技有限公司 | 应用程序资源泄露的检测方法及移动终端、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100468346C (zh) | 2009-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
JP4476813B2 (ja) | 任意に大きな文書内のデータへのスケーラブルなアクセス | |
CN110147204B (zh) | 一种元数据落盘方法、装置、系统及计算机可读存储介质 | |
CN100468346C (zh) | 一种绘图资源的管理方法及系统 | |
CN106156301B (zh) | 一种大字段数据的处理方法及装置 | |
CN110109958B (zh) | 缓存处理方法、装置、设备及计算机可读存储介质 | |
JP2006235960A (ja) | ガーベッジコレクション高速化方法 | |
US7676484B2 (en) | System and method of performing an inverse schema mapping | |
CN107038222A (zh) | 数据库缓存实现方法及其系统 | |
CN115576501B (zh) | 一种raid卡的节点更新方法、系统及相关装置 | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN105469173A (zh) | 一种静态内存进行优化管理的方法 | |
CN100366022C (zh) | 一种缓存分配方法及装置 | |
CN106250242A (zh) | 基于操作系统的内存复用方法及装置 | |
CN108205559B (zh) | 一种数据管理方法及其设备 | |
CN107408054A (zh) | 用于通用计算图形处理单元中的语言嵌入式编程的流控制 | |
CN116304079A (zh) | 基于时序的图谱数据管理方法、设备和可读存储介质 | |
CN111858393A (zh) | 内存页面管理方法、内存页面管理装置、介质与电子设备 | |
US6691121B1 (en) | Method and apparatus for online and dynamic extension of IMS data entry databases | |
CN109324929A (zh) | 一种快照创建方法、装置、设备及可读存储介质 | |
JP4041347B2 (ja) | ガベージコレクション装置及びガベージコレクション方法 | |
US20050192935A1 (en) | Method and apparatus for efficient runtime memory access in a database | |
CN113901057A (zh) | 数据回放方法、装置、计算机设备和存储介质 | |
CN110019057A (zh) | 请求处理方法及装置 | |
EP3539001B1 (en) | Mutable type builder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151221 Address after: The South Road in Guangdong province Shenzhen city Fiyta building 518057 floor 5-10 Nanshan District high tech Zone Patentee after: Shenzhen Tencent Computer System Co., Ltd. Address before: Shenzhen Futian District City, Guangdong province 518057 Zhenxing Road, SEG Science Park 2 East Room 403 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |