2014-02-05 6 views
5

Я искал свой собственный оконный фрейм в WPF, похожий на Visual Studio. Я прочитал, что настройка AllowsTransparency = true заставит WPF отображать в программном режиме. This example является источником моего замешательства (курсив мой), в котором говорится:Является ли WPF аппаратным ускорением, когда Window AllowsTransparency = true?

Полная настройка окна WPF может быть сделано только тогда, когда AllowsTransparency установлено значение «True», который вызывает то, что окно программного обеспечения визуализации, которое может не так быстро рендеринга графического процессора.

Однако, я читал в другом месте, что с окна отводками вы может иметь аппаратное ускорение-и это то, что делает WPF. Мне также трудно представить, что Visual Studio 2013 с пользовательским фреймом и прозрачным размытием границы будет программно-рендеринга.

Есть ли окончательный ответ на вопрос (при условии, что Windows 7 и далее), Является ли WPF аппаратным ускорением, когда окно AllowsTransparency верно?

+0

@OP: добавлены мои 2 цента. –

ответ

7

Кажется, что прозрачные окна (AllowsTransparency = true) являются аппаратное ускорение для Windows Vista и верхний: HW Acceleration of Layered Windows

Существует также исправление, чтобы сделать его работу под окнами XP, а также: http://support.microsoft.com/kb/937106/en-us

+1

Спасибо, меня заставили поверить в обратное. –

1

Я добавьте мои два цента.

Да, это правда. Начиная с Vista, у нас есть аппаратное ускорение для многоуровневых окон, и, похоже, есть исправление для XP.

Здесь прекрасная новость.

Не пытайтесь использовать AllowsTransparency - поверьте мне, есть так много, что может и НЕ БУДЕТ ошибаться, несмотря на то, что это аппаратное ускорение. Конечно, подумайте о своем прецеденте: , если это простой проект хобби, а не приложение уровня предприятия, тогда, вперед.

Некоторые из проблем, которые я лично испытал:

  • основной производительности, верить или нет, «проблемы с производительностью AllowsTransparency» состоит не из концепции. Анимация сосать.
  • Интеграция с другими технологиями. Я помню, как интегрировать решение DirectShow в окно, имеющее AllowsTransparency true. Это не сработало, так как DirectShow не поддерживает рендеринг в многоуровневое окно.

Этот guy, по-видимому, даже говорит о том, что рендеринг программного обеспечения иногда быстрее, чем аппаратное обеспечение, для многоуровневых окон, которое я согласен. Мой опыт также показал, что «аппаратное ускорение» ничего не впечатляет в WPF.

Помню, что я переключился на рендеринг программного обеспечения и не видел потери производительности. Фактически, я предлагаю отключить аппаратное рендеринг, потому что он сложный, и он вызывает визуальные ошибки, если вы нацеливаетесь на широкую область различных конфигураций (XP, XP64, Vista, Win7, разные видеокарты) - знаменитые черные пятна.

Кстати, VS2010 SP1 отключает аппаратный рендеринг для визуальной студии на XP, даже если он ее поддерживает. Зачем? «Значительное число отчетов о сбоях, связанных с аппаратным ускорением»

При этом Visual Studio2013 не использует AllowsTransparency - исправьте меня, если я ошибаюсь, но Snoop показал, что в главном окне AllowsTransparency установлен false.

Как у вас есть пользовательское хромированное окно, которое не является многослойным & PERFORMS хорошо? Это довольно сложный вопрос, но вы можете приступить к работе, если вы используете Google для «Библиотеки пользовательских Chrome WPF». Я подозреваю, что VS делает что-то похожее.

+0

Мне не нравятся эти абсолютные утверждения, которые никогда не используют функцию, существующую на платформе. Хотя я согласен с тем, что вы пытаетесь сделать некоторый пользовательский интерфейс, связанный с большими данными в реальном времени, с анимацией, переходами и хотите сделать панель заголовка немного прозрачной, очевидно, что у вас возникнут проблемы с настройкой AllowTransparency на true. Однако, если вам нужен приятный внешний вид, который отображается на дисплее в течение нескольких минут до начала основного приложения, используйте прозрачные слоистые окна столько, сколько хотите. – ChrisCW

Смежные вопросы