Domanda

Sto cercando di creare un DrawingBrush WPF che disegnerà un modello di tratteggio utilizzando due rettangoli da 1px per 1px.Il modello risultante assomiglierebbe allo sfondo delle classiche app Macintosh.

Ecco con cosa sto lavorando:

<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>

Tutto sembra chiaro e nitido, tranne che le scatole sono troppo grandi.Mentre regolo la finestra sul pennello, le cose iniziano a diventare sfocate.Sembra che l'anti-aliasing sia ciò che mi sta uccidendo;vuole usare 3px per sfumare dal verde fisso al nulla, il che non funziona quando arrivo a dimensioni inferiori a 3-4px.C'è qualcosa che posso fare per disabilitare completamente l'anti-aliasing e disegnare con precisione al pixel?

È stato utile?

Soluzione

Compensa il disegno con 0,5 px e eliminerai l'effetto antialiasing.Ciò accade perché il disegno viene eseguito sul bordo dell'offset pixel, anziché sull'offset pixel effettivo specificato.Compensando X,Y con mezzo pixel, dici al motore di disegno di disegnare sul pixel stesso, eliminando la necessità di antialiasing.

Per qualche motivo però questo non funziona con i gradientbrushes.

Questo comportamento è simile a quello che hai nel disegno Quarts su Mac.

Nota:Suo non la finestra di cui dovresti eseguire l'offset, ma la forma effettiva che stai disegnando quando usi il pennello specificato.

Per una risposta più completa, per favore leggi questo articolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top