Question

Je suis en train de construire un DrawingBrush WPF qui dessinera un motif de hachures en utilisant deux rectangles 1px par 1px. Le motif résultant ressemblerait l'arrière-plan sur les applications Macintosh classiques.

Voici ce que je travaille avec:

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

Tout semble clair et net, sauf que les boîtes sont trop grandes. Comme j'ajuste la fenêtre d'affichage sur la brosse, les choses commencent à devenir floue. Il ressemble à l'anti-aliasing est ce qui me tue; il veut utiliser 3px à disparaître du vert à rien, ce qui ne fonctionne pas lorsque je reçois des tailles ci-dessous 3-4px. Est-ce que je peux faire pour désactiver totalement l'anti-aliasing et faire le dessin précis au pixel?

Était-ce utile?

La solution

Décalez le dessin avec 0.5px et vous débarrasser de l'effet anti-aliasing. Cela arrive parce que le dessin se fait sur le bord du pixel décalé, plutôt que sur le pixel décalage réel que vous avez spécifié. En offset'ing X, Y avec un demi-pixel, vous dire le moteur de dessin pour dessiner sur le pixel lui-même, ce qui élimine la nécessité d'anticrénelage.

Pour une raison quelconque, cela ne fonctionne pas avec gradientbrushes cependant.

Ce comportement est similaire à ce que vous avez dans pintes dessin sur Mac.

Note:. Il est pas la fenêtre que vous devez compenser, mais la forme réelle que vous dessinez lorsque vous utilisez la brosse spécifiée

Pour une réponse plus complète, s'il vous plaît lire cet article .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top