我正在像这样向 imagelist 添加图像 - 使用 Delphi XE 在运行时添加 png 图像到 imagelist。问题出现在从此列表获取位图并将其保存到硬盘上。
bmp:=tbitmap.create;
imagelist.getbitmap(0,bmp);
bmp.savetofile()
这在很多白色bmp文件和一些带有“image”的文件中都会出现。它应该非常容易解决,但我不知道哪里出了问题。
注:以下示例类似于伪代码。下面是代码:
填充列表。
FImageList := TImageList.Create(nil);
FImageList.Masked:=false;
FImageList.ColorDepth:=cd32bit;
FImageList.SetSize(32,32);//I am sure that all images are 32x32
while not dsTemp.eof do//dstemp is a Tdatasetdescendant
begin
ststream := dsTemp.CreateBlobStream(dsTemp.FieldByName('FLAG'), bmRead);
pngImage := TPngImage.Create;
pngImage.LoadFromStream(ststream);
btBitmap := TBitmap.Create;
btBitmap.PixelFormat := pf32bit;
btBitmap.Width := pngImage.Width ;
btBitmap.Height := pngImage.Height ;
pngImage.AssignTo(btBitmap);
btBitmap.AlphaFormat:=afIgnored;
res := FImageList.Add(btBitmap,nil);
// pngImage.savetofile('C:\a\'+inttostr(res)+'.png');-works. image is ok
// btBitmap.savetofile('C:\a\'+inttostr(res)+'.bmp');-works. image is ok
dsTemp.Next;
freeandnil(btBitmap);
freeandnil(pngImage);
end;
加载位图的问题
for iPos := 0 to FImageList.Count-1 do
begin
btBitmap := tbitmap.create;
FImageList.GetBitmap(iPos,btBitmap);
btBitmap.savetofile('C:\a\'+inttostr(iPos)+'thr.bmp');//creates the bitmap, but it is white
end;
在问题关闭后进行编辑:请多投一些反对票!谢谢。
TBitmap.SaveToFile
函数。而且您实际上也没有提出问题。 - Ken White