delphi – 从TImage32(Graphics32库)中删除垃圾DFM数据
我有一个源自T
Image32的控件:
TChromaDisplay = class(TImage32) 一切都很好,除了当我在表单上放下TChromaDisplay时,生成的DFM文件很大(300KB而不是<1KB),因为我在Bitmap.Data字段中保存了垃圾数据(它只是一个灰色图像).每次我将控件放在窗体上时,都会创建位图图像并填充灰色.我不想将图像(垃圾)的内容保存到DFM文件,因为它使EXE更大但我不知道如何. 可能我需要在TChromaDisplay.Create中写一些地方,我没有保存/存储在我的TChromaDisplay中的任何图像数据.但我不知道在哪里/怎么做. object Display: TChromaDisplay Left = 0 Top = 0 Width = 1465 Height = 246 Bitmap.Data = { C0000000C0000000EBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFF EBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFF EBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFFEBEBEBFF etc etc etc 我在Create中试过这个但是没有帮助: Bitmap.Width := 1; Bitmap.Height:= 1; 解决方法
更新:
查看TImage32.Bitmap属性的设计时图像对话框GR32_Dsgn_Bitmap.pas,其中的Clear按钮使用了Bitmap.Delete过程,只是将位图大小设置为0x0.因此,您可以尝试在保存表单流之前调用它来清除位图: type TChromaDisplay = class(TImage32) protected procedure WriteState(Writer: TWriter); override; end; implementation procedure TChromaDisplay.WriteState(Writer: TWriter); begin Bitmap.Delete; inherited; end; 但是,当您在窗体上放置控件时,它仍然无法解释为什么您有位图数据.在继承部分完成后(当Bitmap已经实例化时),您也可以在控件构造函数中调用Bitmap.Delete. 仍然没有经过测试,因为我无法模拟你的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |