Что лучше? Между использованием файла изображения и рисования векторной фигуры - PullRequest
10 голосов
/ 07 июля 2011

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

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

(Этот вопрос может включать WP7, Silverlight, WPF или даже в общих случаях.)

Ответы [ 5 ]

20 голосов
/ 07 июля 2011

Вот общий ответ для сравнения плюсов и минусов растрового изображения (что, я думаю, вы подразумеваете под «файлом изображения») и вектором.

Растровые изображения (gif, tiff, jpeg, png,bmp) - это, по сути, концепция отображения цветов (и других данных, таких как альфа-слой) в сетку пикселей.Различные форматы файлов предлагают варианты того, что поддерживается, и уровни сжатия, но это концепция высокого уровня.Полная карта пикселей и данных хранится в файле в виде матрицы / таблицы.

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

Плюсы для растровых изображений:

  • Они обычно отображаются быстрее, чем вектор.Это связано с тем, что для представления изображения требуются минимальные вычисления (достаточно взять карту пикселей и отобразить ее).

  • Они обрабатывают «фотографическое» содержимое лучше, чем векторные.

  • Они более переносимы, чем векторные.GIF, JPEG, PNG, BMP являются более стандартными, чем любой векторный формат (где обычно у Adobe есть рынок)

Минусы для растровых изображений:

  • Они не масштабируются без ухудшения качества (пикселизация)

  • Манипулирование (т. Е. Изменение размера, размытие, освещение и т. Д.) Растрового изображения дороже процессора, чем вектора

  • Файлы обычно намного больше, чем векторные файлы

Плюсы для векторов:

  • Гибкость длямасштабирование и манипулирование

  • Меньшие форматы файлов, чем векторные

  • Идеально подходит для печати и анимации (т.е. манипулирование формой для создания эффекта анимации)

Минусы для векторов:

  • Время рендеринга, в зависимости от сложности вектора, может быть больше

  • Переносимость большинства форматов очень проприетарна

  • Работает на графических изображенияхне полезно для фотореализма

Надеюсь, это поможет.

5 голосов
/ 07 июля 2011

Джеремия Моррилл (Jeremiah Morrill) дал отличный обзор рендеринга WPF , который в основном показывает, что вектор всегда будет стоить дороже, чем изображение. В основном изображение обрабатывается как текстура DirectX ... независимо от размера, масштабирования или чего-либо еще, существует заданная постоянная стоимость для рендеринга изображения. Как показывает обзор Jer, даже самое простое векторное изображение требует много операций для рендеринга в WPF. Мораль этой истории в том, что, когда вы предоставляете опцию, выбирайте изображение вместо вектора.

2 голосов
/ 07 июля 2011

Основываясь на нашем опыте работы с приложениями для Windows Phone 7 (не от манго), мы находим, что использование изображений вместо рисования дает гораздо большую скорость отклика, а значит производительность UX для непрерывной анимации на страницах.(YMMV) * ​​1001 *

1 голос
/ 08 июля 2011

С точки зрения Windows Phone 7 вы обычно получаете более быстрый рендеринг изображений / растровых изображений, чем путей / векторов.Как общее правило для мобильной разработки, из-за ограниченных ресурсов устройства и возросшей необходимости учитывать производительность, если вы можете сделать что-то один раз, например, подготовить изображение, во время разработки (или компиляции), что определенно предпочтительнее, чем делать этонесколько раз на каждом клиенте.

Будьте очень осторожны при применении правил на разных платформах (WPF, Silverlight и WP7), так как они используются для разных вещей в разных ситуациях и имеют различные ограничения.Вещи, которые вы должны учитывать по телефону, могут не быть такой большой проблемой в приложении WPF, работающем на мощном ПК.

1 голос
/ 07 июля 2011

Я бы изначально сказал, что изображения отображаются быстрее, чем векторы.Чем сложнее вектор, тем больше времени требуется для рендеринга.Чем больше изображение, тем больше времени на рендеринг.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...