Я пытаюсь загрузить jpg в imagelist, преобразовывая .jpg в bmp, а затем сохраняя его в imagelist1.Загрузка изображений в TImageList и чтение их?
Сверху вниз код снип. Работает функция Selectdir и файлы fileexists. Это используется для загрузки во все Изображения в папке. Все изображения названы так. 0.jpg/1.jpg ect ..
Затем я загружаю jpg в tpicture. Задайте ширину/высоту bmp и загрузите BMP с тем же изображением, что и jpg, затем добавьте BMP в изображение. И когда это будет сделано, он должен показать первый снимок. 0.jpg
Два вопроса, сначала, если бы я сделал это так, чтобы он отображал только небольшую область (вверху слева) bmp , но это было правильное изображение. Я предполагаю, что это связано с возможностью урожая. что я не могу понять, как заставить его выбрать центр во время выполнения?
Во-вторых, если я поставил
Imagelist1.width := currentimage.width;
Imagelist1.height := currentimage.height;
Затем он показывает последнее изображение. Imagelist1.GetBitmap()
не работает? , поэтому я предполагаю, что исправление для любого из них было бы замечательным! веселит
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;
это действительно работает, в определенный момент, после его загрузки он не показывает никакого изображения. также мне пришлось изменить image1 на ZImage1.bitmap.assign (bmpout); Поскольку ZImage1 является классом от TGraphicControl. не уверен, если это имеет значение. –
кажется, что он никогда не попадает в цикл while. Всегда вырывается –
Нет способа (за исключением того, что вы игнорируете), что он не может попасть в цикл while, если вызываемая функция; 'while True' всегда' True'. Единственный способ, которым этот код не выполнял, - это если 'SelectDirectory' возвращает false, и функция не вызывается в результате. Что показывает отладчик, если вы установите точку останова на этой строке? –