2010-11-12 6 views
7

In meiner anderen (nicht verwandten) question, @Meleak hatte SnapsToDevicePixels verstreut über den Code (in seiner Antwort), fand ich heraus, es wird verwendet, um die Dinge schärfer aussehen. Also die Frage, warum wird es nicht überall verwendet, da es die Dinge besser aussehen lässt? Oder gibt es da Nachteile, die ich beachten muss? Wann sollte/sollte ich es nicht benutzen?Sollen UseLayoutRounding & SnapsToDevicePixels immer verwendet werden?

Antwort

2

Dadurch deaktiviert subpixel rendering, die Schärfe verbessert aber auch WPF resolution independence. Es kann entweder eine gute oder eine schlechte Sache sein, je nachdem, was Sie grafisch in Ihrer App tun.

Eine vollständige Erklärung finden Sie unter Pixel Snapping auf MSDN.

+21

Deaktiviert Subpixel _positioning_, nicht _rendering_ (ein strichliger Pfad wird weiterhin mit Anti-Aliasing gerendert). Es umrundet einfach die Komponentengrenzen, so dass sie ganzzahlige Koordinaten und Größen haben. Es wird auch die Auflösungsunabhängigkeit nicht vereitelt, da nach dem Konvertieren geräteunabhängiger Werte in den Geräteraum gerundet wird. –

+0

@Nicolas, na ja, es ist schwieriger, mit Subpixeln gerendert zu werden, wenn alle Grenzen an die tatsächlichen Pixelwerte geknipst sind ... Ihr Strichpfadbeispiel würde funktionieren, aber z. Geraden und Füllungen nicht. Da die Unabhängigkeit der Auflösung auch davon abhängt, unabhängig vom Pixelraster zu sein, kann ich nicht sehen, wie es erreicht werden würde, wenn es an dieses Pixelraster geknipst würde. Selbst wenn nach der Koord-Systemkonvertierung eine Rundung durchgeführt wird, gibt es wahrscheinlich kleine Unterschiede beim Rendern zwischen den Geräten. –

+7

Ja, es wird kleine Unterschiede geben, aber Ihre Anwendung sieht in 96 oder 300 dpi ungefähr gleich aus. Das meine ich mit _resolution independence_. –

Verwandte Themen