Что можно сделать с рендерингом рендера в WPF? - PullRequest
3 голосов
/ 05 октября 2010

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

Я заметил эту проблему на разных компьютерах, но тот, который действительно заставил меня задуматься, был более новым ноутбуком Toshiba с видеокартой Radeon Mobility: когда этот ноутбук работает от батареи, разрыв не возникает - но когда онработает подключено все беспорядок.Так что это похоже на проблему с шумом линии электропередачи, который, очевидно, влияет на видеокарту - я предполагаю, что аппаратно ускоренная графика.Тем не менее, графика не-WPF хорошо воспроизводится, так как вы скажете пользователям: «Это не мое приложение, а ваш источник питания!» ?!

Вы когда-нибудь сталкивались с этим?И есть ли в любом случае это исправить?

Приложение .NET 4.0, а ноутбук работал под управлением Windows 7.

Ответы [ 3 ]

2 голосов
/ 06 октября 2010

Обычно проблемы возникают из-за драйверов для видеокарт ATI.Карты NVidia (хотя они имеют свои проблемы) обычно не отображают эти проблемы.

Самый простой способ исправить это - отключить аппаратный рендеринг.Это может вызвать проблемы с производительностью, но часто не будет иметь заметного значения, а иногда может даже повысить производительность.Вы должны будете проверить это для своего собственного приложения, чтобы видеть.Чтобы установить из кода окна:

(PresentationSource.FromVisual(this) as HwndSource).CompositionTarget.RenderMode = RenderMode.SoftwareOnly;
2 голосов
/ 05 октября 2010

Я столкнулся с тем же самым на своем ноутбуке Acer.На самом деле это была проблема с драйвером экрана, и обновление поставщика полностью решило проблему.

Я бы порекомендовал обратиться в Toshiba напрямую по этой проблеме.Укажите им какое-нибудь общедоступное, легко доступное приложение WPF, демонстрирующее проблему.

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

1 голос
/ 05 октября 2010

Как сказал Рид, вполне возможно, это проблема с драйверами. Однако, я видел это раньше на некоторых картах с современными драйверами, так что это не всегда решаемая проблема, в зависимости от вашего оборудования. Если это проблема с графикой, вызванная определенной видеокартой, вы можете попробовать этот обходной путь ...

В regedit вы можете создать или отредактировать следующее значение DWORD в «1» для принудительной программной визуализации всех приложений WPF:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

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

...