首页 > 解决方案 > 如何使用 RTTI 将 TImage 组件与图像复制

问题描述

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

但是,我不知道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->Kind帮助获取和复制它的目的是什么?

有可能吗?

标签: c++c++buildervclrttitimage

解决方案


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

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

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


推荐阅读