Tôi đang cố gắng tải jpg vào một imagelist bằng cách chuyển đổi .jpg thành bmp rồi lưu nó vào imagelist1.Đang tải hình ảnh lên TImageList và Đọc chúng?
Từ trên xuống dưới của mã chụp. Các bộ phận Selectdir hoạt động và các bộ phận làm việc theo nhóm. Điều này được sử dụng để tải trong tất cả các hình ảnh trong một thư mục.Tất cả các hình ảnh được đặt tên như vậy 0.jpg/1.jpg ect ..
Sau đó tôi tải jpg thành hình ảnh. Đặt chiều rộng/chiều cao bmp và tải bmp với cùng một hình ảnh như jpg, sau đó tôi thêm bmp vào imagelist. Và khi hoàn thành nó sẽ hiển thị hình ảnh đầu tiên 0.jpg
Hai vấn đề, đầu tiên nếu tôi làm như vậy nó sẽ chỉ hiển thị một khu vực nhỏ (trên cùng bên trái) của bmp nhưng đó là hình ảnh chính xác. Tôi cho rằng điều này là do tùy chọn cắt. mà tôi không thể dường như tìm ra cách để làm cho nó chọn trung tâm trong thời gian chạy?
Thứ hai, Nếu tôi đặt
Imagelist1.width := currentimage.width;
Imagelist1.height := currentimage.height;
Sau đó nó cho thấy hình ảnh cuối cùng. như Imagelist1.GetBitmap()
không hoạt động? vì vậy tôi giả định một sửa chữa cho một trong hai sẽ là tuyệt vời! cổ vũ 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;
tính năng này hoạt động, đến khi tải xong, nó không hiển thị bất kỳ hình ảnh nào. tôi cũng phải thay đổi image1 thành ZImage1.bitmap.assign (bmpout); Vì ZImage1 là một lớp từ TGraphicControl. không chắc chắn nếu điều này quan trọng .. –
nó dường như không bao giờ nhận được vào vòng lặp while. Luôn luôn phá vỡ ra –
Không có cách nào (ngắn của một ngoại lệ bạn đang bỏ qua) rằng nó không thể nhận được vào vòng lặp 'while' nếu chức năng được gọi; 'trong khi True' luôn là' True'. Cách duy nhất mà mã sẽ không thực thi nó là nếu 'SelectDirectory' trả về false và hàm này không được gọi là kết quả. Trình gỡ rối hiển thị cho bạn điều gì nếu bạn đặt một điểm ngắt trên dòng đó? –