Rendern scharfer Linien in WPF

8

Wenn ich folgendes rende:

%Vor%

Ich bekomme dieses Ergebnis (Kaxaml):

Beachten Sie die dünne weiße Linie zwischen den beiden Formen. Ich suchte herum und fand heraus, dass dies mit der Pixelausrichtung zu tun hat. Ich würde erwarten, dass die Einstellungen SnapsToDevicePixels="True" ausreichen würden, um die Zeile loszuwerden, aber das funktioniert nicht!

Irgendwelche Ideen, wie man die weiße Linie loswerden kann?

    
Robbert Dam 01.12.2009, 09:49
quelle

2 Antworten

11

Versuchen Sie, das Kanten-Aliasing mit RenderOptions wie diesem zu aktivieren (siehe Gittereigenschaften)

%Vor%     
Max Galkin 01.12.2009, 09:55
quelle
4

Denken Sie daran, dass SnapsToDevicePixels nur steuert, dass einzelne Punkte nicht auf Teilpixelwerten liegen. Für horizontale und vertikale Linien ist dies am einfachsten zu beobachten. In Ihrem Fall sehen Sie ein ganz anderes Problem. Die Kanten Ihrer Formen sind geglättet und daher mit dem Hintergrund verschmolzen. Da Ihre Formen genau nebeneinander liegen werden beide mit dem weißen Hintergrund des Fensters verschnitten. Sie können stattdessen versuchen, eine Form hinter die zu setzen:

%Vor%

sollte korrekt dargestellt werden. Sie sehen ähnliche Renderfehler in vielen Vektor-Dateiformaten, die hauptsächlich auf Bildschirm gerendert werden, z. B. SVG.

Die andere Option wäre, das Anti-Aliasing zu deaktivieren, aber das wird Ihre Kanten zackig machen, was vielleicht nicht das ist, was Sie wollen (Anti-Aliasing in der oberen Hälfte ausgeschaltet):

alt text http://hypftier.de/dump/wpf_rendering_shape.png

    
Joey 01.12.2009 10:02
quelle

Tags und Links