图形开发中的系统资源问题(100分)

雄二

Unregistered / Unconfirmed
GUEST, unregistred user!
本人正在开发一个涉及图形编程的项目,其中在每个FORM中需要放置300-400个图形(16*16/32*32),导致系统资源不足,用IMAGELIST好象也不行,请问有何办法?
 
动态创建,引进,随时释放。
 
;关键是你的图形是否是有句柄的,比如从TControl继承下来的都有。有句柄的
话,是要占资源的。
看你的说法,好象是Bitmap的东西,这样的话,可以自己建一个Stream类,把
所有图形装载里面,然后一个一个地画出来。
 
不行不行,图形太多怎么着都不行,
只能动态创建,只建需要的。
 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=244629
用TImage控件A和TBitmap控件B。A在Form上显示。

repeat
B用来加载图片,然后用CopyRect拷贝到A的某一位置上显示。
until 加载完所有图形;
 
既然你得图形大小全都一样,可以用图形处理工具把它们全都复制到一个大的
位图中,排列成一个n*m的图形矩阵,然后在程序中只用一个TBitmap对象来载
入此位图。需要显示时先算出小图形的位置,然后复制到要显示图形的地方。
如果嫌麻烦的话,可以用RxLib中的PicClip控件。如果按你说的有300-400个
16*16/32*32的图形,即使它们全都是24bits真彩色的,拼在一起后也只有1M
多。你可以把它们加入到一个ImageList中,然后用右键菜单中的
Save to bitmap(?)来保存到一个位图文件中。
 
; 用Delphi带的Resource Workshop把你的所有图形变成一个资源文件,

如picture.res,在文件中加入一行(最好紧随{$R *.DFM}):
{$R picture.res}

调用方法:
Image1.picture.BitMap.LoadResourceName(hinstance,'XXXX');

其中XXXX就是你创建项目时给图形起的名!
 
多人接受答案了。
 
顶部