2010-11-12 12 views
7

W moim innym (niepowiązanym) question, @Meleak miał SnapsToDevicePixels rozrzucone po całym kodzie (w jego odpowiedzi), dowiedziałem się, że jest używany, aby rzeczy wyglądały ostrzej. Więc pytanie, dlaczego nie jest używane wszędzie, ponieważ sprawi, że wszystko będzie wyglądać lepiej? Czy są jakieś minusy, o których muszę wiedzieć? Kiedy powinienem/powinienem tego używać?Czy należy użyć UseLayoutRounding & SnapsToDevicePixels?

Odpowiedz

2

Powoduje to wyłączenie funkcji subpixel rendering, która poprawia ostrość, ale także pokonuje wartość resolution independence WPF. Może to być dobre lub złe, w zależności od tego, co robisz w swojej aplikacji, pod względem graficznym.

Zobacz Pixel Snapping na witrynie MSDN, aby uzyskać pełne wyjaśnienie.

+21

Wyłącza subpiksel _pozycjonowanie_, a nie _renderowanie_ (obrysowana ścieżka będzie nadal renderowana z wygładzaniem). Po prostu przecina granice komponentów, więc mają one współrzędne całkowite i rozmiary. Nie unieważnia także niezależności rozdzielczości, ponieważ zaokrąglanie odbywa się po przekształceniu niezależnych wartości urządzenia w przestrzeń urządzenia. –

+0

@Nicolas, cóż, trudniej jest uzyskać renderowanie za pomocą subpikseli, gdy wszystkie twoje granice są przyciągane do rzeczywistych wartości pikseli ... Twój przykład ścieżki obrysu działa, ale np. proste linie i wypełnienia nie. Ponadto, ponieważ niezależność rozdzielczości polega na niezależności od siatki pikseli, nie widzę sposobu, w jaki zostanie ona osiągnięta po podłączeniu do tej siatki pikseli. Nawet jeśli zaokrąglanie zostanie wykonane po konwersji systemu współrzędnych, prawdopodobnie wystąpią niewielkie różnice w renderowaniu między urządzeniami. –

+7

Tak, będą niewielkie różnice, ale aplikacja będzie wyglądać mniej więcej tak samo w rozdzielczości 96 lub 300 dpi. To właśnie mam na myśli przez _resolution independence_. –

Powiązane problemy