/ / Dessiner une brosse de 2px Hatch dans WPF - wpf, brush

Dessin d'un pinceau Hatch 2px dans WPF - wpf, brush

J'essaie de construire un DrawingBrush WPF qui va dessiner un motif de hachures en utilisant deux rectangles 1px par 1px. Le motif résultant ressemblera à l'arrière-plan des 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 leles boîtes sont beaucoup trop grandes. Au fur et à mesure que j'ajuste la fenêtre d'affichage sur la brosse, les choses commencent à devenir floues. Il semble que l'anti-aliasing soit ce qui me tue; il veut utiliser 3px pour passer du vert au solide, ce qui ne fonctionne pas lorsque je suis en-dessous de 3-4px. Est-ce que je peux faire quelque chose pour désactiver totalement l'anti-aliasing et faire des dessins au pixel près?

Réponses:

1 pour la réponse № 1

Décaler le dessin avec 0.5px et vous vous débarrasserez de l'effet d'anticrénelage. Cela se produit parce que le dessin est effectué sur le bord du décalage du pixel, plutôt que sur le décalage réel des pixels que vous avez spécifié. vous indiquez au moteur de dessin de dessiner sur le pixel lui-même, ce qui élimine le besoin d'antialiasing.

Pour une raison quelconque, cela ne fonctionne cependant pas avec les brosses à gradient.

Ce comportement est similaire à celui de Quarts sur Mac.

Note: C'est "s ne pas la fenêtre que vous devez décaler, mais la forme réelle que vous dessinez lorsque vous utilisez le pinceau spécifié.

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