本来想做个打印预览的功能,我是这样做的:
创建了一个TJpegImage的数组,个数是1000(测试用的),然后使用TBitMap的canvas做为画布画了一个简单的正方形,然后存到之前的那个数组中去,程序运行时内存使用暴涨到700多M,速度也相当的慢,请各位大侠帮帮指点指点。
代码如下:var
  index:integer;
begin
  index:=0;
  Bit:=TBitmap.create;
  bit.width:=700;
  bit.height:=800;
  while(index<1000) do 
  begin
     JArray[index]:=TJpegImage.create;
     Bit.canvas.Rectangle(10,10,200,200);//由于1000个图各不相同所以这里我只画了个简单的。
     Bit.Dormant;           
     Bit.FreeImage;
     JArray[index].assign(bit);
     inc(index);
  end; 
end;另外征集打印预览的好方法。

解决方案 »

  1.   

    JArray[index]只有创建,没有释放?
    1千个jpg
      

  2.   

    呵呵 不好意思,上午公司断网,没有及时回复。
    那个数组我是测试用的,我是想做个打印预览,是分页的所以我就把每页的内容放到了那个数组里。
    有个问题我不是很明白:
    这个数组我使用Savetofile(‘***.jpg’)保存到本地时,一共才10几M,怎么内存里就那么大(700多M)????
      

  3.   

    设置压缩率试试   CompressionQuality 
      

  4.   

    如果是比较线条分明的图片,压缩率是很高的,jpg有10多M,在内存有几百M也是正常的
    如果只有黑白,建议改为单色bitmap,会节省一些内存
      

  5.   

    我试过bitmap,内存会更高 比JPEG高出100多M
    4楼
    对图像这方面不太懂,有没有什么方法,在内存里也压缩下,我不要求显示效果多高,能看就行。
      

  6.   

    这个好像一般在保存文件的时候用吧,我试了下把CompressionQuality设为50,内存依然很高。。
      

  7.   

    找到原因了,由于颜色值太高了,结贴了,谢谢大家帮助
    设置了下PixelForma属性,内存暴跌,呵呵,