Нужно ли создавать эскизы для WinRT-приложения
Я исходил из фона asp.net, где, если вы хотите отобразить фотогалерею, у вас должно быть два файла для каждой фотографии, то есть оригинал и отдельный файл миниатюр.
Если бы я должен был создать галерею Win8App, которая имеет 100 фотографий на просмотр. Было бы неплохо с точки зрения производительности просто изменить размер фотографии... т.е. иметь только 1 файл. (Они загружаются из файловой системы).
Я знаю, что это может зависеть от определенных условий, но в целом, каков наилучший способ сделать это?
1 ответ
Зависит от размера файла и от того, откуда вы его взяли. Если файлы находятся в системе, вы можете использовать StorageFile.GetThumbnailAsync. В противном случае, если файлы имеют большой размер и вы получаете их из другого места (службы), вы можете загрузить их только тогда, когда они прокручиваются в поле зрения пользователя. Убедитесь, что объекты утилизируются, поскольку вы их не используете, поскольку растровые изображения печально известны тем, что истощают ресурсы памяти.
Для меня 100 изображений - это не так уж и много, но лучше иметь цифры, подтверждающие это утверждение, поскольку я понятия не имею, насколько большие файлы.
Вот некоторые общие рекомендации для эскизов из MSDN
Я бы попробовал разные способы справиться с этим и использовать инструменты производительности, чтобы увидеть конечный результат. Возможно, вы могли бы сгруппировать изображения и сделать так, чтобы пользователь просматривал одну группу за один раз, возможно, использовать изображения-заполнители, или, возможно, файлы не такие большие, и это не проблема, просто изменить размер в зависимости от вида.
Для отложенной загрузки (рекомендуется для многих элементов) используйте виртуализацию данных с помощью ISupportIncrementalLoading. Более подробную информацию об этом можно найти в MSDN.