簡體   English   中英

WinRT GridView崩潰

[英]WinRT GridView crashes

當顯示多於13個 (12個或更少的顯示效果很好)時,大圖像(3264x2448)會縮小為320x180個圖像項-GridView崩潰,出現非托管異常:未處理的異常位於0x7583A862(combase.dll)。

XAML:

<GridView x:Name="ImagesGridView" HorizontalAlignment="Stretch" Height="Auto" VerticalAlignment="Stretch" Width="Auto">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Image Stretch="Fill" Source="{Binding Source}" Height="180" Width="320" />
        </DataTemplate>
    </GridView.ItemTemplate>
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>

加載代碼:

private static async Task<BitmapImage> LoadImage(StorageFile file)
    {
        var bitmapImage = new BitmapImage();
        var stream = (FileRandomAccessStream)await file.OpenAsync(FileAccessMode.Read);

        bitmapImage.SetSource(stream);

        stream.CloneStream();
        return bitmapImage;

    }

    public async void GetPictures()
    {
        var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, new[] { ".png", ".jpg" });
        var picturesQuery = await KnownFolders.PicturesLibrary.CreateFileQueryWithOptions(queryOptions).GetFilesAsync();
        foreach (var pictureFile in picturesQuery)
        {
            var bitmap = await LoadImage(pictureFile);
            var img = new Image { Source = bitmap };
            ImagesGridView.Items.Add(img);
        }
    }

崩潰不會發生在加載圖像上,而是在所有加載成功之后,應用程序應該在GridView中顯示圖像。 另外,我使用的是同一張圖片的副本,以確保所有圖片都相同。

對我來說,在應用程序中加載大圖像似乎很常見,所以也許我在這里做錯了什么?

當您的圖片控件僅為320x180時,您正在以全分辨率加載圖片,因此您嘗試將3264x2448x4(每像素字節)x13 =〜400MB的紋理饋送到視頻卡中,這可能有點麻煩。

嘗試使用StorageFile.GetThumbnailAsync()加載圖像,例如。

private static async Task<BitmapImage> LoadImageAsync(StorageFile pictureFile)
{
    using (var stream = await pictureFile.GetThumbnailAsync(
        ThumbnailMode.SingleItem,
        320,
        ThumbnailOptions.ResizeThumbnail))
    {
        var bitmap = new BitmapImage();
        await bitmap.SetSourceAsync(stream);
        return bitmap;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM