2013-05-24 36 views
6

Có ai biết cách hiển thị hình ảnh trong bản xem trước TFileOpenDialog không?Cách xem trước hình ảnh với TFileOpenDialog

Tôi đang sử dụng ImageEn để hiển thị thông tin hình ảnh và thêm hỗ trợ loại tệp bổ sung vào hộp thoại. Ví dụ ... Tôi có thể tải thông tin hình ảnh về các loại tệp jp2, j2k và các loại tệp khác không được hỗ trợ, nhưng cách tải loại hình ảnh không được hỗ trợ để xem trước bằng ImageEn.

Tôi đang hiển thị thông tin hình ảnh trong hộp thoại hoạt động tốt, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về cách tải hình ảnh không được hỗ trợ vào PreviewHandler ở bất kỳ đâu. Tôi có thể sử dụng ImageEnIO để lấy thông tin tệp cũng như bitmap của hình ảnh.

TFileOpenDialog

Liệu TFileOpenDialog sử dụng một handler xem trước để hiển thị hình ảnh hoặc là một số cách khác cần thiết?

Tôi xin lỗi tôi không có mã để hiển thị hình ảnh, nhưng tôi không biết cách triển khai hình ảnh.

Rodrigo nhận xét về Trình xử lý xem trước Hosting trong ứng dụng VCL Delphi. rằng các cửa sổ thám hiểm không sử dụng một trình xử lý xem trước để xem trước các hình ảnh ... vì vậy tôi giả sử TFileOpenDialog sử dụng cùng một API như Windows Explorer, nhưng tôi thậm chí không chắc chắn về điều này. http://theroadtodelphi.wordpress.com/2013/05/24/hosting-preview-handlers-in-delphi-vcl-applications/

Nếu câu hỏi này quá rộng để được chấp nhận ở đây, tôi sẽ xóa câu hỏi.

+0

OpenPictureDialog có thể là tùy chọn không? – bummi

+0

Không ... Tôi biết cách làm điều đó. Cần làm điều đó với TFileOpenDialog. – Bill

+0

@RRUZ, Remy Lebeau đã đăng Sử dụng IShellItemImageFactory thay vào đó, vì nó ủy quyền cho IThumbnailProvider nội bộ (và tới IExractImage và IExtractIcon khi không có sẵn IThumbnailProvider). http://embarcadero.newsgroups.archived.at/public.delphi.nativeapi/201007/1007283828.html Sử dụng IShellItemImageFactory có tốt hơn không? – Bill

Trả lời

4

...that the windows explorer does not use a preview handler to preview the images. Khi tôi nói rằng tôi có nghĩa là đối với các định dạng hình ảnh chuẩn như gif, jpeg, bmp, png v.v. Đối với các định dạng tùy chỉnh khác, bạn phải triển khai trình xử lý Xem trước, ngoài ra bạn có thể đăng ký hình thu nhỏ bằng cách sử dụng giao diện Thumbnail Handlers và giao diện IThumbnailProvider.

+3

Trong trường hợp bạn không hoàn toàn nắm bắt điều này, những gì bạn phải làm là thực hiện một trình xử lý xem trước và đăng ký nó với trình bao. Bạn thực hiện điều này ** bên ngoài ** ứng dụng delphi của bạn. Đó là bởi vì nó là trình bao hiển thị bản xem trước trong hộp thoại tệp, ngay cả khi hộp thoại được lưu trữ trong ứng dụng của bạn. –

+0

Cảm ơn David. Nó phức tạp hơn nhiều so với tôi nghĩ, nhưng cảm ơn sự giúp đỡ của bạn. – Bill

Các vấn đề liên quan