gpt4 book ai didi

c++ - 数据流管理 : Derived Form contains derived Bitmaps

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:06 36 4
gpt4 key购买 nike

使用 C++ Builder XE7

我有一个带有 TImageList 对象的基本表单

object FormBase: TFormBase
Left = 0
Top = 0
Caption = 'FormBase'
ClientHeight = 200
ClientWidth = 329
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object ImageList1: TImageList
Left = 32
Top = 24
Bitmap = {
494C010101007800180010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
snipped
00000000000000000000000000000000}
end
end

派生 TFormBase 我注意到 TImageList 的位图被复制到派生形式:

inherited FormBase1: TFormBase1
Caption = 'FormBase1'
PixelsPerInch = 96
TextHeight = 13
inherited ImageList1: TImageList
Bitmap = {
494C010101007800180010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
snipped
00000000000000000000000000000000}
end
end

现在我的应用程序中是否有两个相同的图像列表?

最佳答案

这很有趣。

在运行时,只会为每个 TFormBase 分配一个 TImageList,因此在那个级别,您只有一个 TImageList 对象.

但是,基于这些 DFM,您的可执行文件将包含位图数据的两份拷贝 - 一份用于 TFormBase,另一份用于 TFormBase1。这会使您的可执行文件更大(这是不好的)并且会稍微减慢 TFormBase1 的创建时间(因为位图数据被加载两次)。我认为所有 DFM 资源都保留在内存中,因此它也使用了比必要更多的内存。

尝试手动编辑派生的 DFM 以删除 bitmap={...} 部分,并查看可执行文件是否缩小(以及程序行为是否保持不变!)。

关于c++ - 数据流管理 : Derived Form contains derived Bitmaps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34895293/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com