Frage

Ich versuche, eine WPF DrawingBrush zu bauen, die ein Schraffurmuster mit zwei 1px von 1px Rechtecke zeichnen wird. Das resultierende Muster wie der Hintergrund auf klassischen Macintosh-Anwendungen aussehen würde.

Hier ist, was ich arbeite mit:

<Canvas SnapsToDevicePixels="True">
    <Canvas.Background>
        <DrawingBrush x:Name="gridBackgroundBrush" 
        Viewport="0,0,10,10"            
        ViewportUnits="Absolute"
        TileMode="Tile">
          <DrawingBrush.Drawing>
            <DrawingGroup>
              <DrawingGroup.Children>                                   
                <GeometryDrawing Geometry="M0,0 L10,0 10,10, 0,10Z" Brush="Green"/>                 
                <GeometryDrawing Geometry="M10,10 L20,10 20,20, 10,20Z" Brush="Green" />                                
              </DrawingGroup.Children>
            </DrawingGroup>
          </DrawingBrush.Drawing>
        </DrawingBrush>
    </Canvas.Background>
</Canvas>

Alles sieht klar und scharf, mit der Ausnahme, dass die Boxen sind viel zu groß. Als ich das Ansichtsfenster auf der Bürste einzustellen, beginnen die Dinge verschwommen zu bekommen. Es sieht aus wie das Anti-Aliasing ist das, was bringt mich um; sie will 3px verwenden aus dem Vollen Grün zu nichts verblassen, die funktionieren nicht, wenn ich auf Größen unter 3-4px bekommen. Gibt es etwas, was ich tun kann, um völlig das Anti-Aliasing zu deaktivieren und pixelgenaue Zeichnung tun?

War es hilfreich?

Lösung

Offset der Zeichnung mit 0.5px und Sie werden von der Anti-Aliasing-Effekt loszuwerden. Es geschieht, weil Zeichnung auf dem Rand des Pixels erfolgt versetzt, anstatt auf dem tatsächlichen Pixel versetzt sind, dass Sie angegeben haben. Durch offset'ing X, Y mit einem halben Pixel, sagen Sie die Zeichenmaschine auf den Pixel zeichnen sich, was die Notwendigkeit von Anti-Aliasing eliminiert.

Aus irgendeinem Grunde ist dies allerdings nicht mit gradientbrushes arbeiten.

Dieses Verhalten ist ähnlich dem, was Sie in Quarts haben Zeichnung auf dem Mac.

. Hinweis: Es ist nicht das Ansichtsfenster, die Sie Offset sollen, aber die tatsächliche Form, die Sie zeichnen sind, wenn die angegebene Bürste mit

Für eine vollständigere Antwort, lesen.

scroll top