2012-04-20 2 views
2

У меня проблема с рендерингом в WPF при использовании эффектов (в частности, DropShadowEffect). Это то, что мой пользовательский интерфейс должен выглядеть следующим образом: enter image description hereПроблемы с рендерингом в WPF при использовании эффектов

Но когда я начинаю изменять размер окна, это глюк в определенных точках и обращать на это:

enter image description here

Вы можете увидеть текст искажается, и на правой стороне кнопки «Начать сервер» есть темная линия. Проблема исчезнет, ​​если я удалю эффекты. Это просто ошибка в WPF или есть способ ее исправить?

ответ

3

Как сказал Галлеи, вы можете «пострадать» от подпиксельного позиционирования. Если вы компилируете свое приложение в .Net 4 FrameWork, вы можете установить свойство UseLayoutRounding вашего окна, чтобы отключить это поведение.

UseLayoutRounding=True 

Если это не сделать трюк, попробуйте программный рендеринг перепроверить ли DX дает вам неприятность (хотя я уверен, вы не должны идти туда).

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; 
+0

layoutrounding сделал трюк – user1032657

+0

очень приятно последнее решение решить его, RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; – ahmedsafan86

+0

Но почему эффект тени, вызывающий текст, который в противном случае был бы ясным, чтобы стать искаженным? Отображается ли текст прозрачными пикселями, когда UseLayoutRounding является ложным? – xr280xr

1

Я думаю, что кнопка «Старт-сервер» и панель поиска имеют центрирование, поэтому при изменении размера всего окна элемент управления можно рисовать на экране от полупикселя до другого полупикселя. Вот почему элемент управления выглядит размытым.

Попробуйте с SnapToDevicePixels, чтобы узнать, поможет ли это. Установите для свойства значение true для обоих элементов управления. Он должен обеспечить, чтобы все ребра были нарисованы на пикселях физического устройства.

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