Ich habe keine Bildchen, die werden in einer TImageList gehalten. Zur Laufzeit erzeuge ich ein großes TBitmap mit mehreren "Stern" Bitmaps um Ratings darzustellen.
Dieser Code funktioniert unter Windows:
Code: Alles auswählen
imges.GetBitmap(42, bmrt);
For i := 11 Downto 2 Do // rote Sterne
Begin
bm := TBitmap.Create;
bm.Assign(bmrt); // Erst mal zuweisen damit all Bitmap Eigenschaften gleich sind
bm.Width := i * bmrt.Width;
bm.Height := bmrt.Height;
k := 0;
while (k < (bm.Width - 2)) Do
Begin
bm.Canvas.Draw(k, 0, bmrt); // Stern Rot
Inc(k, bmrt.Width);
end;
lstRating.Add(Pointer(bm));
end;
lstRating.Add(Pointer(bmrt)); // ein roter Stern

Wenn ich die Zeile bm.Assign(...) weg lasse sondern nur die Bilder hinein zeichne, dann sind die Bildchen (Sterne) alle da, aber der Hintergrund wird schwarz


Mask / Transparent einstellen usw. ich bekomme es einfach nicht hin. Das Bitmap aus der TImageList hat pf32Bit, nach dem TBitmap.Create hat es nur pf24Bit. Sobald ich es auf pf32Bit setze wird unter Linux nichts mehr gezeigt.
Dargestellt wird das Bild so:
imgRating.Picture.Bitmap.Assign(TBitmap(lstRating));
Bei der Darstellung "ein roter Stern" wird das Bitmap gezeigt. Nur nicht das wenn mehrere Sterne in einem Bitmap zusammen kopiert sind.
Weiß jemand Rat was ich ändern könnte / muss?
Suse 12.3, "lazarus-1.1.40204-20130208.laz.x86_64.rpm", "fpc-2.6.0-0.laz.x86_64.rpm"
Vielen Dank im Voraus. Grüße Markus