Ł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;