2013-05-24 19 views
6

Qualcuno sa come visualizzare un'immagine nell'anteprima TFileOpenDialog?Come visualizzare l'anteprima di un'immagine con TFileOpenDialog

Sto utilizzando ImageEn per visualizzare le informazioni sull'immagine e per aggiungere ulteriore supporto per il tipo di file alla finestra di dialogo. Ad esempio ... Posso caricare le informazioni sull'immagine su jp2, j2k e altri tipi di file non supportati, ma come caricare un tipo di immagine non supportato per l'anteprima usando ImageEn.

Sto visualizzando le informazioni sull'immagine nella finestra di dialogo che funziona correttamente, ma non riesco a trovare alcuna informazione su come caricare un'immagine non supportata in PreviewHandler da nessuna parte. Posso usare ImageEnIO per ottenere le informazioni sul file e una bitmap dell'immagine.

TFileOpenDialog

fa TFileOpenDialog utilizzare un gestore di anteprima per visualizzare l'immagine o è qualche altro modo necessaria?

Mi dispiace, non ho il codice da mostrare per la visualizzazione dell'immagine, ma non so come implementarlo.

Rodrigo ha commentato Hosting Preview Handler in Delphi VCL Applications. che Windows Explorer non usa un gestore di anteprime per l'anteprima delle immagini ... quindi presumo che TFileOpenDialog usi la stessa API di Windows Explorer, ma non ne sono nemmeno sicuro. http://theroadtodelphi.wordpress.com/2013/05/24/hosting-preview-handlers-in-delphi-vcl-applications/

Se questa domanda è troppo ampia per essere accettata qui eliminerò la domanda.

+0

sarebbe OpenPictureDialog un'opzione? – bummi

+0

No ... so come farlo. Devi farlo con TFileOpenDialog. – Bill

+0

@RRUZ, Remy Lebeau ha pubblicato Usa IShellItemImageFactory invece, come delegato internamente a IThumbnailProvider (ea IExractImage e IExtractIcon quando IThumbnailProvider non è disponibile). http://embarcadero.newsgroups.archived.at/public.delphi.nativeapi/201007/1007283828.html È meglio usare IShellItemImageFactory? – Bill

risposta

4

...that the windows explorer does not use a preview handler to preview the images. Quando ho detto ciò intendo per i formati di immagine standard come gif, jpeg, bmp, png e così via. Per altri formati personalizzati è necessario implementare un gestore di anteprima, inoltre è possibile registrare una miniatura utilizzando un Thumbnail Handlers e l'interfaccia IThumbnailProvider.

+3

Nel caso in cui non si comprenda completamente questo, ciò che si deve fare è implementare un gestore di anteprime e registrarlo con la shell. Implementa questo ** al di fuori ** della tua app delphi. Questo perché è la shell che visualizza le anteprime in una finestra di dialogo, anche se la finestra di dialogo è ospitata nella tua app. –

+0

Grazie David. È molto più complicato di quanto avrei pensato, ma grazie per il tuo aiuto. – Bill