Что лучше? Между использованием файла изображения и формы вектора ничьей

Как я уже говорил по названию. Я просто хочу знать, что лучше между использованием файлов изображений и рисованием векторных фигур (или путей). Я знаю, что использование вектора лучше для внешнего вида, но как насчет производительности.

И если это зависит от случаев. Может кто-нибудь объяснить.

(Этот вопрос может включать 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, работающем на ПК с высоким уровнем производительности.