TPersistent::Assign - C++ Builder

C++ Builder 参考手册System::ClassesTPersistentAssign


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

virtual void __fastcall Assign(TPersistent *Source);

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

参数:
Source:从 TPersistent 继承的对象,数据的来源。

返回值:

  • 把 Source 指向的对象的所有的属性和数据都赋值到当前对象对应的属性和数据,包括格式转换之后再赋值;
  • 如果 Source 为 NULL,会抛出 EConvertError 异常;
  • 多数子类重载了 Assign 方法来实现功能,重载的 Assign 方法没有处理的内容需要调用父类的 Assign 方法来实现功能;
  • 如果没有重载的 Assign 方法,TPersistent 的 Assign 方法调用了 Source 对象的 AssignTo 方法。

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

jpg 和 png 之间进行格式转换的时候,中间需要经过 bmp,先把 jpg 转成 bmp,再把 bmp 转成 png,jpg ↔ bmp ↔ png 它们之间进行格式转换的时候可以用 Assign 方法。

#include <Vcl.Imaging.jpeg.hpp>
#include <Vcl.Imaging.pngimage.hpp>
#include <memory>

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

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

参考:


C++ Builder 参考手册System::ClassesTPersistentAssign

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容