位图缩放问题 (TBitmap)

WieldWolf 2010-01-25 10:04:41
问题之一:
新建一个线程,在OnExecute加入如下代码

void __fastcall TScaleDibThread::Execute()
{
//---- Place thread code here ----
::Graphics::TBitmap* bmp1=NULL;
::Graphics::TBitmap* bmp2=NULL;
while(!Terminated)
{
::Sleep(10);
try
{
bmp1=new ::Graphics::TBitmap();
bmp1->PixelFormat=pf24bit;
bmp1->Width=640;
bmp1->Height=480;
bmp2=new ::Graphics::TBitmap();
bmp2->PixelFormat=pf24bit;
bmp2->Width=320;
bmp2->Height=240;
//有了下面这句StretchDraw后,程序会造成内存泄漏,注释掉后不会,这个StretchDraw有什么问题呢?
//bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);
}__finally
{
if(bmp1!=NULL)
{
delete bmp1;
bmp1=NULL;
}
if(bmp2!=NULL)
{
delete bmp2;
bmp2=NULL;
}
}
};
}

运行,正常,但把其它的那行bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);的注释去掉,则程序的造成迅速的资源泄漏,在任务管理器中观察内存和GDI对象,一分钟不到时就很明显了,请问这句StretchDraw有什么问题呢,

问题之二:
上面的代码是每次缩放操作时新建位图,如果换成一次创建,多次使用,仍然有问题,StretchDraw画图失败,
...全文
210 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WieldWolf 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhouzhangkui 的回复:]
bmp1->Canvas->Lock();
bmp2->Canvas->Lock();
bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);
bmp2->Canvas->Unlock();
bmp1->Canvas->Unlock();
把bmp1 也加进去试试

[/Quote]

好像可以了,谢谢,我跑一段时间测试一下,等下再结帖
周药师 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wieldwolf 的回复:]
引用 1 楼 zhouzhangkui 的回复:
C/C++ code
bmp2->Canvas->Lock();
bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);
bmp2->Canvas->Unlock();


已经测试,不行,仍然有内存泄漏
[/Quote]
bmp1->Canvas->Lock();
bmp2->Canvas->Lock();
bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);
bmp2->Canvas->Unlock();
bmp1->Canvas->Unlock();
把bmp1 也加进去试试
WieldWolf 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhouzhangkui 的回复:]
C/C++ code
bmp2->Canvas->Lock();
bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);
bmp2->Canvas->Unlock();
[/Quote]

已经测试,不行,仍然有内存泄漏
我来看看CB 2010-01-25
  • 打赏
  • 举报
回复
是不是都要删除
delete bmp1;
delete bmp2;
周药师 2010-01-25
  • 打赏
  • 举报
回复

bmp2->Canvas->Lock();
bmp2->Canvas->StretchDraw(TRect(0,0,320,240),bmp1);
bmp2->Canvas->Unlock();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧