![]() |
Imagelist und "Zentrieren"
Liste der Anhänge anzeigen (Anzahl: 2)
Hi
Ich klicke zur Designtime doppelt auf meine ImageList und füge dann nen Image hinzu und wähle "Zentrieren" aus. Nun habe ich die Bilder in eine DLL ausgelagert und füge sie nun zur Laufzeit über den Quelltext hinzu:
Delphi-Quellcode:
Die Bilder werden später dann in ein Image geladen.procedure ImageToBitmap(Img: TImage); var Pic: TPicture; begin Pic := TPicture.Create; try Pic.Assign(Img.Picture); Img.Picture.Bitmap.Assign(Pic.Graphic); finally FreeAndNil(Pic); end; end; procedure LoadImages; var h :HINST; r :TResourceStream; j :TJpegImage; im: TImage; I: Integer; Namen: TStringList; begin Namen := TStringList.Create; Namen.Add('bPlay'); Namen.Add('bPause'); [...] h := LoadLibrary('Bilder.dll'); if h <> 0 then begin j := TJpegImage.Create; im := TImage.create(self); try for i := 0 to 9 do begin r := TResourceStream.Create(h, Namen[I], 'Jpeg'); try j.LoadFromStream(r); Im.Picture.Assign(j); ImageToBitmap(Im); ImageList1.Add(im.Picture.Bitmap, im.Picture.Bitmap); finally r.Free; end; end; finally j.Free; im.free; end; end; FreeLibrary(h); Namen.free; end; Nur leider werden sie dann nicht mehr zentriert... Das Resultat hab ich mal diesem Post angefügt. Meine Frage: wie schaffe ich es das die Bilder zentriert in die ImageList kommen? mfg.Dominik |
Re: Imagelist und "Zentrieren"
Zitat:
es ist ehrlich gesagt nicht die Aufgabe einer Imagelist Bilder zu zentrieren. Wie der Name eigentlich schon sagt handelt es sich dabei lediglich um eine Liste von Bildern. Eine Image Komponente hingegen bietet die Möglichkeit ein Bild zentriert anzuzeigen (gibt eine entsprechend benannte Eigenschaft). Besser wäre es imho aber, wenn Du die Bilder gleich in richtiger Größe ablegst, bzw. Dir nur den relevanten Ausschnitt zurückgeben lässt. In der Suche findest Du schnell, wie man einen Ausschnitt des Bildes kopiert. Statt das Bild zu zentrieren kannst Du auch einfach die Mitte des Bildes (vertikal und horizontal) bestimmen. Die Hälfte der Höhe und Breite Deines Zielbildes kannst Du dann von den Koordinaten jeweils abziehen und eben die benötigte Höhe und Breite (von dem so berechnenten Orio) kopieren. Entspricht eben dem Kopieren des zentralen Bereichs und damit ist das Resultat das, was Deinem zentrierten Bild entspricht. Gruß Der Unwissende |
Re: Imagelist und "Zentrieren"
ich habs mal so probiert: (im2 ist auch ein TImage, SrcRect und DestRect vom typ TRect)
Delphi-Quellcode:
aber irgendwie kommen dann nur schwarze kästchen...[...] j.LoadFromStream(r); Im.Picture.Assign(j); ImageToBitmap(Im); SrcRect.Left := im.Picture.Width div 2 - 12; SrcRect.Top := im.Picture.Height div 2 - 12; SrcRect.Right := im.Picture.Width div 2 + 12; SrcRect.Bottom := im.Picture.Height div 2 + 12; DestRect := Rect(0, 0, 24, 24); Im2.Canvas.CopyRect(DestRect, Im.Canvas, SrcRect); ImageList1.Add(im2.Picture.Bitmap, im2.Picture.Bitmap); [...] mit dem ganzen image/bitmap/picture/canvas zeugs blick ich net durch^^ kann mir jemand sagen was ich falsch mache? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz