Afin d'apprendre comment développer sur C# et Visual Studio j'ai fait une application UWP hors ligne pour lire Comic/Manga stocké dans ma tablette Windows.
L'une des principales étapes était de prendre le répertoire relatif de chaque image dans un épisode et de créer une image bitmap de chacun pour les charger dans FLipView.Utilisation du bitmap de BitmapImage dans UWP
Actuellement, je fais de cette façon:
foreach (String value in ImageDirectory)
{
StorageFile file = await StorageFile.GetFileFromPathAsync((value));
IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
image = new BitmapImage();
await image.SetSourceAsync(fileStream);
images.Add(image); //images is a <List> of BitmapImage
}
Dans le cas le plus extrême que j'ai, avec 124 images (50,1 Mo sur disque) lors du chargement qu'ils utilisent environ 860 Mo de RAM qui semble excesive. Je sais que charger toutes les images comme on n'est pas l'approche la plus efficace, où une solution plus sur-demad serait mieux, mais finalement mes questions sont:
Y at-il un meilleur (qui utilise moins RAM) façon de charger les images?
Quel est le type d'image source? Sont les jpegs, pngs, ou quoi? – TomServo
Par défaut, ** FlipView prend en charge la virtualisation **. FlipView est un [ItemsControl] (https://msdn.microsoft.com/library/windows/apps/BR242803) contrôles dérivés et son [ItemsPanel] (https://msdn.microsoft.com/library/windows/apps/ windows.ui.xaml.controls.itemscontrol.itemspanel.aspx) est [VirtualizingStackPanel] (https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.virtualizingstackpanel) qui est un panneau de virtualisation, de sorte qu'il prend en charge la virtualisation de l'interface utilisateur. Pour plus d'informations, consultez [cette question] (https://social.msdn.microsoft.com/Forums/windowsapps/en-US/7c6d0cdb-63c4-4f25-b2ea-f4f0cacb730d). –
Pour réduire l'utilisation du RAM, assurez-vous de ne pas modifier le ItemsPanel de FlipView (en cas de changement, veuillez utiliser un panneau de virtualisation). Ensuite, vous pouvez essayer de combiner avec la virtualisation de données pour voir si cela aide. Pour plus d'informations, consultez [ListView et la virtualisation des données GridView] (https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/listview-and-gridview-data-optimization). –