Der gezeigte Code scheint nicht das Problem zu sein. Zumindest nicht in einer
VCL-Testanwendung. Könnte es sein das das Malen in eine Bitmap das Problem auslöst?
Ja, das malen ist das Problem.
Mal vereinfach gezeigt, im OndrawItemEvent der Listbox:
Delphi-Quellcode:
TI.picture.LoadFromStream(msOut);
bm := TBitmap.Create;
bm.SetSize(32,32);
bm.PixelFormat := pf24bit;
bm.Transparent := True;
bm.TransparentMode := TTransparentMode.tmfixed;
bm.TransparentColor := clWhite;
bm.Canvas.Draw(0,0, TI.Picture.Graphic);
lb.Canvas.StretchDraw(System.classes.rect (rect.Left+2, rect.top+3, rect.Left+2 + round (24*ScaleFactor), rect.top+3 + round (24*ScaleFactor)), bm);
- bm auf 32 bit zu setzen bringt nichts
- bm.transparentmode auf auto zu setzen bringt auch nichts, da dann zB. vollbunte Icons transparent werden...