7

ここでのほとんどのソリューションは、UWP afaik では利用できない System.Drawing を使用します。GetThumbnailAsync() は仕事をしますが、画像以外のファイルに対してのみです。画像ファイルを使用すると、渡された引数に関係なく、常にスケーリングされたプレビューが表示されます。

ファイルのサムネイル、画像、テキスト

次のように、ファイル名の左側にある小さなプレビューの代わりに、シェル ファイルのアイコンを表示したいと思います。

シェルファイルのアイコン

何かご意見は?

ありがとう

PS : ハックを見つけました: 同じ拡張子を持つ 0 バイトの一時ファイルを作成し、そのサムネイルを作成します。もっと良い解決策があることを願っています...

4

1 に答える 1

5

さて、ここにダミーファイルアプローチを使用するヘルパーメソッドがあります(静的クラスに配置します):

public async static Task<StorageItemThumbnail> GetFileIcon(this StorageFile file, uint size = 32)
{
    StorageItemThumbnail iconTmb;
    var imgExt = new[] { "bmp", "gif", "jpeg", "jpg", "png" }.FirstOrDefault(ext => file.Path.ToLower().EndsWith(ext));
    if (imgExt != null)
    {
        var dummy = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("dummy." + imgExt, CreationCollisionOption.ReplaceExisting); //may overwrite existing
        iconTmb = await dummy.GetThumbnailAsync(ThumbnailMode.SingleItem, size);
    }
    else
    {
        iconTmb = await file.GetThumbnailAsync(ThumbnailMode.SingleItem, size);
    }
    return iconTmb;
}

使用例:

var icon = await file.GetFileIcon();
var img = new BitmapImage();
img.SetSource(icon);
于 2016-05-26T05:51:26.217 に答える