Zitat von
xZise:
Moin,
ist denn das Bild > 35x35 Pixel? Dann würde ich dir Canvas.StrechDraw empfehlen. Damit kann du auf dein „Pufferbitmap“ (lBitmap) das Orginal verkleinert zeichnen.
Hmm... Ich weiss nicht ob ich dass richtig verstanden habe. Wenn ich so probiere, kommt leider die selbe Meldung
Delphi-Quellcode:
lBitmap := TBitmap.Create();
Rect.Left := 0;
Rect.Right := 35;
Rect.Top := 0;
Rect.Bottom := 35;
lBitmap.Canvas.StretchDraw(Rect, FPerson.Bild.Bitmap);;
ImageListFahrer.Add(lBitmap, lBitmap);
Zitat von
DeddyH:
Zitat:
Delphi-Quellcode:
lBitmap := TBitmap.Create();
lBitmap := FPerson.Bild.Bitmap;
Denke ich falsch, oder erzeugst Du Dir hier ein feines Speicherleck? Erst erzeugst Du eine Instanz und dann weist Du der Variablen eine andere Instanz zu, kannst somit die erzeugte nicht mehr freigeben
Ja, das habe ich mir eigentlich ja auch gedacht, aber
Zitat von
Luckie:
Hast du eigentlich schon mal dran gedacht, das Bitmap Objekt auch zu erzeugen?
Zitat von
DeddyH:
[edit] Evtl. liegt der ursprüngliche Fehler ja ganz woanders.
Delphi-Quellcode:
lBitmap : TBitmap;
begin
lBitmap := FPerson.Bild.Bitmap;
if Assigned(lBitmap) then
begin
//Dimensionen der Imagelist vor dem Einfügen festlegen
ImageListFahrer.Width := lBitmap.Width;
ImageListFahrer.Height := lBitmap.Height;
ImageListFahrer.Add(lBitmap, lBitmap); // <-- Fehler hier (jetzt weg?)
ListItem := TListItem.Create(ListViewPerson.Items);
ListItem.SubItems.Add(FPerson.Name);
ListViewPerson.Items.AddItem(ListItem);
end;
[/edit]
Also, ich habe die Größe im Objektinspektor auf 35*35 gesetzt. Der Witz an der Sache ist, dass die Graphik größer ist und so zu sagen verkleinert im Listview/Imagelist dargestellt/hinzugefüg werden soll...