Desenho de um portal escova 2px no WPF

votos
1

Eu estou tentando construir um WPF DrawingBrush que vai chamar um teste padrão do portal utilizando dois 1 x 1 pixel retângulos. O padrão resultante seria parecido com o fundo em aplicativos Macintosh clássicos.

Aqui está o que eu estou trabalhando com:

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

Tudo parece clara e nítida, com exceção de que as caixas são demasiado grande. Como eu ajustar o Viewport na escova, as coisas começam a ficar embaçada. Parece que o anti-aliasing é o que está me matando; ele quer usar 3px a desvanecer-se de verde sólido para nada, que não funciona quando eu chegar a tamanhos abaixo 3-4px. Existe algo que eu possa fazer para desativar totalmente o anti-aliasing e fazer o desenho com precisão de pixel?

Publicado 19/05/2009 em 15:33
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Compensar o desenho com 0.5px e você vai se livrar do efeito anti-aliasing. Isso acontece porque o desenho é feito na borda do pixel offset, em vez do pixel real deslocamento que você especificou. Por offset'ing X, Y com metade de um pixel, você diz ao motor de desenho para desenhar no próprio pixel, o que elimina a necessidade de anti-aliasing.

Por alguma razão isso não funcionar com gradientbrushes embora.

Este comportamento é semelhante ao que você tem em Quarts desenho no Mac.

Nota: É não o visor que você deve compensar, mas a forma real que você está desenhando ao usar o pincel especificado.

Para uma resposta mais completa, por favor, leia este artigo .

Respondeu 04/10/2009 em 02:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more