【问题标题】:How to duplicate TImage component with the image using RTTI如何使用 RTTI 将 TImage 组件与图像复制
【发布时间】:2021-08-09 18:40:51
【问题描述】:

我知道如何使用 RTTI 复制和复制 TImage 组件和其他组件。

但是,我不知道之前加载的原始TImage 中的图像是否可以与副本一起复制。

是否可以复制TImage 中的图像而无需在创建后将图像重新加载到新组件中?

这是我在要复制的组件中查找 PropType 类型的代码:

PTypeInfo TypeInfo = static_cast<PTypeInfo>(Original->ClassInfo());

int PropCount = GetTypeData(TypeInfo)->PropCount;

for(int i = 0; i < PropCount; i++)
{
    switch ((*Prop->PropType)->Kind)
    {
        case tkInteger : ...
        case tkChar :
        case tkEnumeration :
        case tkSet :
        case tkWChar:
        case tkWString :
        case tkLString :
        case tkString:
        case tkFloat:
            break;
        default:
            break;
    }
} 

这是一个将Height从原始组件复制到新创建的示例:

int OrdHeight = GetOrdProp(Original, "Height");
PropInfo = GetPropInfo((PTypeInfo)New->ClassInfo(), "Height");
SetOrdProp(New, PropInfo, OrdHeight);

如何复制图像?如何将图片的数据从原来的TImage获取到新的TImage,他的PropType-&gt;Kind是什么帮助获取和复制的?

有可能吗?

【问题讨论】:

    标签: c++ c++builder vcl rtti timage


    【解决方案1】:

    复制图片数据最简单的方法是将Assign()原来的TImage::Picture对象复制到新的TImage::Picture对象:

    NewImage->Picture->Assign(OrigImage->Picture);
    

    您可以使用 RTTI 获取 2 个TPicture* 对象指针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2017-06-02
      • 2020-10-12
      • 2013-03-25
      • 2016-10-09
      相关资源
      最近更新 更多