Bilder in TImageList laden und lesen?

Ich versuche, JPG in eine Imageliste zu laden, indem ich das JPG in ein BMP konvertiere und es dann in ImageList1 speichere.

Vom oberen zum unteren Rand des Code-Snips. Das Selectdir funktioniert und die Datei existiert. Teile funktionieren. Dies wird verwendet, um alle Bilder in einem Ordner zu laden. Alle Bilder werden wie folgt benannt: 0.jpg / 1.jpg ect ..

Ich lade dann das JPG zu einem Bild. Stellen Sie die BMP-Breite / Höhe ein und laden Sie das BMP mit dem gleichen Bild wie JPG. Dann füge ich das BMP zur Bildliste hinzu. Und wenn es fertig ist, sollte es das erste Bild 0.jpg zeigen

Zwei Probleme, zuerst, wenn ich es so machen würde, würde es nur einen kleinen Bereich (oben links) des BMP zeigen, aber es war das richtige Bild. Ich gehe davon aus, dass dies an der Optionsernte liegt. was ich kann nicht scheinen, herauszufinden, wie man es Mitte während der Laufzeit vorwählt?

Zweitens, wenn ich sage

Imagelist1.width := currentimage.width;
Imagelist1.height := currentimage.height;

Dann zeigt es das letzte Bild. mögenImagelist1.GetBitmap() funktioniert nicht? Ich gehe also davon aus, dass ein Fix für einen der beiden großartig wäre! Prost Squills

procedure TForm1.Load1Click(Sender: TObject);
var
openDialog : TOpenDialog;
dir :string;
MyPicture :TPicture;
currentimage :Tbitmap;
image : integer;
clTrans : TColor;
begin
  Image := 0 ;
  //lets user select a dir
 SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP);
  myPicture :=Tpicture.Create;
  currentimage := TBitmap.Create;
//keeps adding images as long as the file path exsist.
//thus comic pages should be renumbed to 0-XX
  while FileExists(Dir+'\'+inttostr(image)+'.jpg') do
  begin
   try
    MyPicture.LoadFromFile(Dir+'\'+inttostr(image)+'.jpg');   //load image to jpg holder
    currentimage.Width := mypicture.Width;       //set width same as jpg
    currentimage.Height:= mypicture.Height;      //set height same as jpg
    currentimage.Canvas.Draw(0, 0, myPicture.Graphic);     //draw jpg on bmp
    clTrans:=currentimage.TransparentColor;           //unknown if needed?
    //Imagelist1.Width := currentimage.Width;
    //imagelist1.Height := currentimage.Height;
    Imagelist1.Addmasked(Currentimage,clTrans);     //add to imagelist
   finally
    image := image +1;                          //add one so it adds next page
   end;
 end;
 ImageList1.GetBitmap(0,zImage1.Bitmap);
 mypicture.Free;
 currentimage.Free;
end;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage