TPersistent::AssignTo - C++ Builder

C++ Builder 参考手册 ➙ TPersistent ➙ AssignTo


头文件:#include
命名空间:System::Classes
函数原型:

virtual void __fastcall AssignTo(TPersistent *Dest);

System::Classes::TPersistent::AssignTo 是 System::Classes::TPersistent 的成员函数,把当前对象的所有属性和数据都赋值到 Dest 对象,包括类型和格式转换再赋值。

参数:
Dest:赋值的目标对象

返回值:

  • 把当前对象的所有属性和数据都赋值到 Dest 对象对应的属性和数据;
  • TPersistent 的 AssignTo 是 protected: 方法,只是简单的抛出 EConvertError 异常,
  • 从 TPersistent 继承的子类必须重载 AssignTo 来实现这个方法;
  • 大多数类只是实现了 Assign,并没有实现 AssignTo。

例:把 "d:\\test.png" 图片转成 jpg 格式保存为 "d:\\test.jpg"

jpg 和 png 之间进行格式转换的时候,中间需要经过 bmp,先把 png 转成 bmp,再把 bmp 转成 jpg,png ↔ bmp ↔ jpg 它们之间进行格式转换的时候都可以使用 Assign 方法,只有 TPngImage 实现了 AssignTo,这个例子测试了这个方法 。

#include 
#include 
#include 

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    try
    {
        std::auto_ptr jpg(new TJPEGImage);
        std::auto_ptr png(new TPngImage);
        std::auto_ptr bmp(new TBitmap);

        png->LoadFromFile(L"d:\\test.png");
        png->AssignTo(bmp.get());
        jpg->Assign(bmp.get());
        jpg->SaveToFile(L"d:\\test.jpg");
    }
    catch(Exception &E)
    {
        ShowMessage(L"错误:" + E.Message);
    }
}

参考:

  • System::Classes::TPersistent::Assign
  • System::Classes::TPersistent
  • System::TObject::Equals
  • System::TObject
  • VCL 类继承关系

C++ Builder 参考手册 ➙ TPersistent ➙ AssignTo

你可能感兴趣的:(TPersistent::AssignTo - C++ Builder)