TBitmap.SaveToStream(100分)

  • 主题发起人 主题发起人 andin
  • 开始时间 开始时间
A

andin

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi的TBitmap控件是否有问题?
在一个工作线程里,调用几次 TBitmap.SaveToFile(或者SaveToFile),就会产生异常:
EOutOfResouces,正是莫名其妙!仔细研究以下,发现几个奇观的地方:
1。多次调用同一个对象的 TBitmap.Canvas.Handle,但值却经常变化,再看TBitmap的
源程序,仅仅当Canvas.Handle句柄不存在时,才GetDC,我不知道如何解释这种现象。
2。EOutOfResources ,是不是分配句柄不成功?
这个问题困扰了我好长时间,如有那位大侠帮我解决这个问题,我真是感激不尽。。。。

 
把具体代码贴出来看。
 
相关源程序是这样的:
ScreenDC := GetWindowDC(0);
try
Assert( BitBlt(bmpDst.Canvas.Handle,
0,0,DstRect.Right,DstRect.Bottom,
ScreenDC,
SrcRect.Left,
SrcRect.Top,
SRCCOPY) );
bmpDst.SaveToFile('c:/' + IntToHex(GetTickCount,8) + '.bmp');//这儿出现EOutOfResources异常
finally
ReleaseDC(0,ScreenDC);
end;

在我得工作线程里,不断的调用这一段程序,经常出错,你说奇怪不奇怪?
 
各位大侠,注意监视一下bmpDst.Canas.Handle变量,你就会发现这不是一个固定的值,
如何解释这个现象?
 
再补充一点:
这个问题非常的普遍,我用Google搜索了一下,国内国外的Delphi程序员都碰到了类似的问题
,可是都没有解决这个问题,这说明什么问题?高手们注意了,这个问题负有挑战性!
 
我也碰到了~
http://www.delphibbs.com/delphibbs/dispq.asp?lid=882494
 
后退
顶部