Ændre størrelse på bitmaps giver problemer
I mit program har jeg en ilMain og en il48x48 TImageList. ilMain indeholder de bitmaps jeg bruger i programmet og il48x48 indeholder kopi under kørslen.Vha. en opsætning kan man vælge mellem 16, 24, 32, 48 pixel ikoner (i princippet kunne det være alt mellem 16 og 48) og til det bruger jeg følgende procedure:
procedure ResizeImageList(ilSource, ilDest: TImageList; const aPixels: integer);
var
i: integer;
iBmp, oBmp: TBitmap;
begin
ilDest.Clear;
ilDest.Masked := ilSource.Masked;
ilDest.ImageType := ilSource.ImageType;
ilDest.DrawingStyle := ilSource.DrawingStyle;
ilDest.ShareImages := ilSource.ShareImages;
ilDest.BkColor := ilSource.BkColor;
ilDest.BlendColor := ilSource.BlendColor;
ilDest.Width := aPixels;
ilDest.Height := aPixels;
for i := 0 to ilSource.Count - 1 do
begin
iBmp := TBitmap.Create;
oBmp := TBitmap.Create;
try
ilSource.GetBitmap(i,iBmp);
SmoothResize(iBmp,oBmp,aPixels,aPixels);
ilDest.AddMasked(oBmp,clBlack);
finally
oBmp.Free;
iBmp.Free;
end;
end;
end;
SmoothResize, som virker, har jeg fundet her: http://www.eksperten.dk/spm/616757
Problemet er baggrundsfarven/transparency-farven som jeg ikke kan få sat. Alle bitmaps har den grimme hvide kant omkring sig.
Hvad gør jeg forkert?
Er der noget i ovenstående procedure der ikke bliver frigivet? Tænker på Dormant-proceduren som jeg ikke helt forstår og ReleaseHandle som jeg ditto ikke helt har fattet betydningen af.
I proceduren opretter og frigiver jeg bitmappene for hvert loop. Det sker fordi jeg ikke kan finde ud af at blanke dem.
