Размытое / пиксельное отображение DataTemplate для ComboBox в WPF - PullRequest
1 голос
/ 03 февраля 2009

У меня есть DataTemplate, дающий элементы для отображения в ListBox и ComboBox. Окно, которое я создал, выглядит так: Скриншот http://img223.imageshack.us/img223/8117/datatemplateexampletz4.png

Вопрос, который у меня возникает, заключается в том, почему DataTemplate в ComboBox является размытым или чуть более пиксельным, чем отображение в ListBox. Это довольно сложно увидеть на скриншоте, но это кажется более заметным, когда я на самом деле использую приложение. Есть идеи, почему это происходит? Это связано с тем, что ClearType включен для одного элемента управления, а не для другого?

Любые идеи будут оценены. Я могу опубликовать код, если это необходимо.

Ответы [ 3 ]

1 голос
/ 03 февраля 2009

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

http://www.nbdtech.com/blog/archive/2008/11/20/blurred-images-in-wpf.aspx

1 голос
/ 03 февраля 2009

Размытость текста в ComboBox по сравнению с ListBox вызвана тем, что ClearType отключен во всплывающих окнах (в том числе для ComboBox). Это было подтверждено Microsoft .

Из связанной статьи:

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

1 голос
/ 03 февраля 2009

Этот эффект особенно заметен на буквах «Adobe» на значке. Поскольку я предполагаю, что значок является своего рода графикой, это не относится к ClearType, который в любом случае полезен только в WPF , но представляет собой более общую проблему. Один обычный подозреваемый - это пиксельный щелчок .

...