Я собирался добавить это как комментарий, но я хочу, чтобы он был правильно процитирован и сносок.
Инструмент доступности Mangifier в Windows Vista , используемый для поддержки WPF. Если вы увеличите масштаб содержимого WPF, вы увидите резко увеличенную версию приложения, демонстрирующую, что WPF действительно основан на векторах.
Тим Снит, специалист по технологиям в Microsoft, сообщил об этом в 2006 году :
6/25/2011: Исходное изображение исчезло. Заменено другим изображением, показывающим тот же эффект.
Грег Шехтер отвечает на некоторые комментарии в этом блоге , объясняя, что у лупы больше нет этого трюка. Лупа специально обнаруживает приложения WPF и знает, как попросить их сделать себя масштабированными. Они убрали зависимость от WPF в лупе. Похоже, что лупа зависела от чего-то в WPF, что они хотели убрать или удалить:
И «БП», и «Джозеф Куни» имеют
заметил, что увеличение WPF
контент с использованием встроенной ОС
Лупа больше не делает разрешение
независимое увеличение контента.
Это наблюдение верно.
В результате серии изменений
которые слишком многочисленны, чтобы описать
здесь лупа ОС больше не
«WPF-осведомлен» и выполняет растровое масштабирование
так же, как это делает другой контент.
Хотя мы теряем эту функцию, мы
считаю, что без зависимостей
что позволило лупе работать в
WPF-специфичный способ, мы можем быть более гибкими
в том, что мы предоставляем клиентам WPF
двигаться вперед.
Обратите внимание, что выше только о
внепроцессное увеличение. когда
Вы делаете масштабирование (через масштабирование) в пределах
ваше собственное приложение WPF,
рендеринг продолжает оставаться
повторно растеризовать в более высоком масштабе, так
все остается гладким в этом большинстве
общий сценарий. Это изменение
строго об использовании внешнего
лупа.
Так что у лупы он был, но больше нет.
В канале 9 видео " Грег Шехтер: архитектура Windows Presentation Foundation (WPF) " Грег Шехтер рассказал о том, как лупа использовалась для предоставления этой функции.
Лупа и DWM работали вместе. Лупа изменила граф сцены DWM, чтобы его клиентская область фактически указывала на корень сцены на рабочем столе. Затем DWM знал, что лупа была там, и знал, как избежать этого ужасного эффекта «наведения видеокамеры на телевизор, показывающий видеокамеру».
Редактировать : 9/7/2018. От Ответ Яна Гриффитса:
Назад, когда Vista впервые поставлена, и когда WPF был на версии 3.0,
масштабирование с помощью встроенной лупы на самом деле делает на основе вектора
масштабирование.
Это перестало работать при поставке пакета обновления 1 для WPF 3.5. (Это сработало
в 3.5 до sp1.) Причина, по которой он работал до того, заключается в том, что DWM
(Desktop Window Manager) - часть Windows, ответственная за
представить все, что вы видите на экране - использует MILCORE.DLL, чтобы сделать его
рендеринг. Версии 3.0 и 3.5 WPF также использовали этот же компонент для
render - это означало, что весь контент WPF был нативным, поэтому
говорить. (На самом деле, в Windows XP, где нет DWM,
MILCORE.DLL - это то, что WPF помещает в вашу систему самостоятельно.
выгода. Но он встроен в Vista и Windows 7.) Когда WPF использовал
MILCORE.DLL для визуализации в Vista, любые эффекты, применяемые DWM, такие как
масштабирование также применимо так, как вы хотите к WPF - оно действительно
масштаб без пикселей.
К сожалению, это уже не так. И причина в том, что WPF
начал добавлять новые функции рендеринга. В 3.5 sp1, новая функция в
Вопрос был в поддержке пользовательских пиксельных шейдеров. Чтобы включить это,
Microsoft пришлось выпустить обновление MIL. (Медиа Интеграция
Слой - бит, который выполняет фактический рендеринг.) Однако они не былидействительно в состоянии обновить MILCORE.DLL, потому что это часть
Windows - это то, как все, что вы видите на экране, становится на экране.
Выпуск новой версии MILCORE.DLL эффективно означает выталкивание
обновление для Windows. График выпуска Windows является независимым
этого для .NET, и поэтому единственный способ, которым команда WPF могла разумно
добавить новые функции должен был отправить новый MIL. (Теоретически они могли бы иметь
сделал это через Центр обновления Windows, но поскольку WPF теперь принадлежит другому
разделение Microsoft, чем Windows, такого рода вещи, кажется, не
случается на практике.)
Начиная с версии .NET 3.5 sp1, MIL находится в другой DLL, которая называется
wpf_gfx_vXXXX.dll, где vXXXX - номер версии. В .NET 4.0 это
wpf_gfx_v0400.dll.
Плюс в том, что WPF добавляет новые функции рендеринга с каждым
новая версия, без необходимости обновления самой Windows.
недостатком является то, что рендеринг WPF больше не так тесно интегрирован
с Windows, как это было кратко назад, когда Vista поставлялась. И результат
это, как вы видели, это увеличение не так весело, как раньше
будет.