Что лучше? Между использованием файла изображения и формы вектора ничьей
Как я уже говорил по названию.
Я просто хочу знать, что лучше между использованием файлов изображений и рисованием векторных фигур (или путей).
Я знаю, что использование вектора лучше для внешнего вида, но как насчет производительности.
И если это зависит от случаев. Может кто-нибудь объяснить.
(Этот вопрос может включать WP7, Silverlight, WPF или даже в общих случаях.)
Ответы
Ответ 1
Вот общий ответ, чтобы сравнить плюсы/минусы Bitmap (что, я думаю, вы подразумеваете под "файлом изображения" ) против Vector.
Растровые изображения (gif, tiff, jpeg, png, bmp) по существу представляют собой концепцию отображения цветов (и других данных, таких как альфа-слой) в сетку пикселей. Различные форматы файлов предлагают варианты того, что поддерживается, и уровни сжатия, но это концепция высокого уровня. Полная карта пикселей и данных хранится в файле в виде матрицы/таблицы.
Изображения на основе векторных изображений, как вы говорите, основаны на путях. Вместо хранения информации по пикселям формат файла будет хранить геометрические точки и данные.
Профайлы для растровых изображений:
-
Они обычно визуализируются быстрее, чем вектор. Это связано с тем, что при представлении изображения требуется минимальное вычисление (просто возьмите карту пикселя и дисплей).
-
Они обрабатывают "фотографическое" содержимое лучше, чем вектор.
-
Они более переносимы, чем векторные. GIF, JPEG, PNG, BMP являются более стандартными, чем любой векторный формат (где обычно Adobe имеет рынок)
Концы для растровых изображений:
-
Они не масштабируются без ухудшения (пикселизации)
-
Манипуляция (т.е. изменение размера, размытие, освещение и т.д.) растрового изображения является более дорогостоящим процессором, чем вектор
-
Файлы обычно намного больше, чем векторные файлы
Плюсы для векторов:
-
Гибкость масштабирования и манипуляции
-
Меньшие форматы файлов, чем векторные
-
Идеально подходит для печати и анимации (т.е. манипуляции с формой для создания эффекта анимации)
Концы для векторов:
-
Время выполнения, в зависимости от сложности вектора, может быть длиннее
-
Переносимость большинства форматов очень проприетарная
-
Работайте с изображениями, основанными на графике, но не полезными для фотореализма.
Надеюсь, это поможет.
Ответ 2
Иеремия Моррилл дал отличный обзор WPF-рендеринга, который в основном показывает, что вектор всегда будет дороже рендеринга, чем изображение. В основном изображение обрабатывается как текстура directx... независимо от размера, масштабирования или чего-то еще, существует постоянная стоимость рендеринга изображения. Как показывает Иер, даже простейшее векторное изображение выполняет ряд операций для рендеринга в WPF. Мораль этой истории заключается в том, что при предоставлении опции переходите к изображению вместо вектора.
Ответ 3
Основываясь на нашем опыте с приложениями Windows Phone 7 (Non-mango), мы обнаруживаем, что использование изображений вместо использования чертежа дает гораздо большую отзывчивость, следовательно, производительность UX для непрерывной анимации на страницах. (YMMV)
Ответ 4
Я бы сказал, что изображения визуализируются быстрее, чем векторы. Сложный вектор, больше времени для рендеринга. Чем больше изображение, тем больше времени на рендеринг.
Я собираюсь предположить, что (в терминах Silverlight) большая часть текущего видеооборудования способна непосредственно обрабатывать рендеринг изображений, что стало стимулом для производительности. Я не уверен, что вычисления для векторов могут выполняться на уровне видеоустройства.
Ответ 5
С точки зрения Windows Phone 7 вы обычно получаете более быструю визуализацию изображений/растровых изображений, а не путей/векторов. Как правило, для мобильных разработок, из-за ограниченных ресурсов на устройстве и повышенной потребности в рассмотрении производительности, если вы можете что-то сделать, например, подготовить изображение, при разработке (или компиляции) времени, которое определенно предпочтительнее этого делать несколько раз на каждом клиенте.
Будьте очень осторожны с применением правил на разных платформах (WPF, Silverlight и WP7), поскольку они используются для разных вещей в разных ситуациях и находятся под разными ограничениями. Вещи, которые вы должны учитывать на телефоне, могут не быть такой же проблемой в приложении WPF, работающем на ПК с высоким уровнем производительности.