Ładowanie obrazów do TImageList i czytanie ich?

Próbuję załadować plik jpg do listy obrazów, konwertując plik .jpg na bmp, a następnie zapisując go w imagelist1.

Od góry do dołu kodu snip. Działa Selectdir i działa na plikach. Służy do ładowania wszystkich obrazów w folderze. Wszystkie obrazy są nazywane tak, jak 0.jpg / 1.jpg ect ..

Następnie ładuję plik jpg na obrazek. Ustaw szerokość / wysokość bmp i załaduj bmp z tym samym obrazem co jpg, a następnie dodaj bmp do listy obrazów. A kiedy to zrobisz, powinien pokazać pierwszy obraz 0.jpg

Dwie kwestie, po pierwsze, jeśli zrobiłem to tak, to pokazałoby tylko mały obszar (lewy górny róg) bmp, ale był to poprawny obraz. Zakładam, że wynika to z opcji uprawy. który nie wydaje mi się zrozumieć, jak ustawić go w centrum w czasie wykonywania?

Po drugie, jeśli to zrobię

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

Następnie pokazuje ostatni obraz. lubićImagelist1.GetBitmap() nie działał? więc zakładam, że poprawka dla jednej z nich byłaby świetna! wiwaty

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;

questionAnswers(1)

yourAnswerToTheQuestion