c++ - 如何使用 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
帮助获取和复制它的目的是什么?
有可能吗?
解决方案
最简单的复制图片数据的方法是Assign()
将原始TImage::Picture
对象复制到新TImage::Picture
对象:
NewImage->Picture->Assign(OrigImage->Picture);
您可以使用 RTTI 获取 2 个TPicture*
对象指针。
推荐阅读
- css - Material-ui 日历在设备切换栏上重新加载页面时崩溃
- mysql - 修复 MySQL 转储中的错误编码字符
- r - R Keras:基本教程回归中的错误。py_call_impl(callable, dots$args, dots$keywords) 中的错误:ValueError:在用户代码中:
- python - 将串行数据发送到 ZedBoard 上的 FPGA 设计
- unreal-engine4 - 我收到错误。我无法导出我的项目
- reactjs - Next.js 上未显示内容丰富的富文本编辑器
- java - 如何解决 Java BufferString 问题?我的意思是清除缓冲区
- python - 如果不满足条件,如何返回另一个值(可能是 nil/nan)
- abap - microfocus Fortify,识别 .abap 代码,但表示不支持
- r - 有人可以帮我解决这个情节吗