ImageList1中的圖形寫回成bmp文件,為何寫回的bmp文件與在設計期Add到ImageList1的bmp文件不同。(20分)

  • 主题发起人 主题发起人 leway
  • 开始时间 开始时间
L

leway

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
BP: TBitMap;
begin
BP:= TBitMap.Create;
try
ImageList1.GetBitmap(1,BP);
BP.SaveToFile('C:/test.bmp');
finally
BP.Free;
end;
end;
 
Because they add transparency filter!!!!
 
有沒有辦法解決??
 
幕后说的对!
我没有办法,我也想知道!
 
難道沒有辦法解決嗎??
我隻要能從TIMageList中獲得載入前一樣的bmp文件即可。
 
将ImageList的Masked设为False;然后重新加载图片。
 
将ImageList的Masked设为False,不行阿???
 
不会吧?我试过可以的,将Masked设为False后,要重新添加图片。
 
我試過,不行。(bmp圖形為16色)
 
老兄,我也用16色的bmp测试的呀!
 
真的。
為何我的測試結果是會變大很多呢??你寫文件是怎樣寫的,和下面的相同嗎??
procedure TForm1.Button1Click(Sender: TObject);
var
BP: TBitMap;
begin
BP:= TBitMap.Create;
try
ImageList1.GetBitmap(1,BP);
BP.SaveToFile('C:/test.bmp');
finally
BP.Free;
end;
end;
 
ImageList的長、寬你是怎樣調的
 
你檢查過前後的文件大小相同嗎??
 
图片是16x16x16的,ImageList的长宽都是16。
保存后的文件的大小比原始文件大,可能是压缩率不同的缘故,但效果是一样的。
 
謝謝了。
但是我需要前後文件內容和大小要一樣,可否有辦法??
 
那就恐怕不能用imagelist控件了,你可以把文件当资源保存,再恢复
 
将图片做成资源文件,然后加载到ImageList,保存时直接从资源文件保存。
部分代码如下:

var
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
bmp.LoadFromResourceName(hInstance,'MYBMP');
ImageList1.Clear;
ImageList1.Add(bmp,nil);
try
  bmp.SaveToFile('C:/test.bmp');
finally
bmp.Free;
end;
end;
 
接受答案了.
 
后退
顶部