为啥动态创建的TImage加载资源图像异常
为啥动态创建的TImage加载资源图像错误!
用下面的方法动态创建Image并从资源中加载图像,则提示不能加载:
TImage *image = new TImage(Form1);
TResourceStream *rs = new TResourceStream((int)HInstance, "ok_png", L"PNG");
image->Parent = Form1;
image->AutoSize = true;
image->Center = true;
image->Top = 10;
image->Left = 10;
if(image->Picture->Graphic)
{
ShowMessage("成功加载");
image->Picture->Graphic->LoadFromStream(rs);
}
else ShowMessage("不能加载");
如果在Form1上放置一个Image1,并写如下代码:
TResourceStream *rs = new TResourceStream((int)HInstance, "ok_png", L"PNG");
Image1->Picture->Graphic->LoadFromStream(rs);
却能成功!
------解决方案--------------------
不要用Free,用 delete png; delete img; delete rs;
Free 是delphi中才用,c++builder中不建议使用对象的Free,help中就明确说明了的。
用下面的方法动态创建Image并从资源中加载图像,则提示不能加载:
TImage *image = new TImage(Form1);
TResourceStream *rs = new TResourceStream((int)HInstance, "ok_png", L"PNG");
image->Parent = Form1;
image->AutoSize = true;
image->Center = true;
image->Top = 10;
image->Left = 10;
if(image->Picture->Graphic)
{
ShowMessage("成功加载");
image->Picture->Graphic->LoadFromStream(rs);
}
else ShowMessage("不能加载");
如果在Form1上放置一个Image1,并写如下代码:
TResourceStream *rs = new TResourceStream((int)HInstance, "ok_png", L"PNG");
Image1->Picture->Graphic->LoadFromStream(rs);
却能成功!
------解决方案--------------------
不要用Free,用 delete png; delete img; delete rs;
Free 是delphi中才用,c++builder中不建议使用对象的Free,help中就明确说明了的。