delete TImage出错怎么回事?

zhangwuji156 2008-06-24 01:54:05
_fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ImgTemp = new TImage(Owner);
}
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete ImgTemp;
}
用的时候也没问题,就是delete的时候出错了.头儿让我别用临时TImage了,用临时位图,怎么用呀?
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwuji156 2008-06-25
  • 打赏
  • 举报
回复
我还懒得写delete呢,可头儿说了,"你是怎么学C++的,知道一个new对应一个delete吗",说得我很尴尬
Waiting4you 2008-06-24
  • 打赏
  • 举报
回复
ImgTemp = new TImage(Owner); 改成ImgTemp = new TImage(this);
VCL会自动清除它的所属控件, 如果ImgTemp和Form1的Owner是同一个的话ImgTemp可能会在Form1之前删除,这样到TForm1::FormDestroy里就出错了。(其实象你的ImgTemp这种情况不用写删除代码,VCL会帮你清除的)

第二个问题是如果想用注释掉的那句,你得先设置tmpimg的大小先。
tmpimg->Width = Image1->ClientWidth;
tmpimg->Height = Image1->ClientHeight;
tmpimg->Canvas->CopyRect(Image1->ClientRect, Image1->Canvas, Image1->ClientRect);
zhangwuji156 2008-06-24
  • 打赏
  • 举报
回复
Graphics::TBitmap tmpimg=new Graphics::TBitmap();
// tmpimg->Canvas->CopyRect(Image2->Canvas->ClipRect, Image1->Canvas, Image2->Canvas->ClipRect);
tmpimg->Assign(Image1->Picture);

为什么用注释掉的那句就不行,必须用
tmpimg->Assign(Image1->Picture);
这句,为什么?

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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