Pergunta

Anti-aliasing não pode ser desligado no WPF.Mas quero remover a aparência desfocada das fontes WPF quando elas são pequenas.

Uma possibilidade seria usar um componente .net 2.0.Parece que perderia a capacidade de transparência e o suporte ao Blend.Mas nunca tentei.

Alguém tem uma solução para isso?Alguma desvantagem disso?

Obrigado

Foi útil?

Solução

Você já tentou colocar um WindowsFormsHost controle em uma janela/controle WPF?Isso permitirá que o WPF renderize um controle WinForms.

ATUALIZAÇÃO de novembro de 2012:Esta pergunta e resposta tem 4 anos. Desde então, a renderização de texto melhorou no WPF.Por favor, não coloque controles WinForms em aplicativos WPF;essa foi uma maneira hackeada de consertar a renderização da fonte.Não é mais necessário.

Outras dicas

O Anti-Alias ​​pode ser desativado iniciando o WPF 4.0 com a seguinte opção:

TextOptions.TextFormattingMode="Display"

SnapsToDevicePixels não tem absolutamente nenhum efeito na renderização de texto.

A Microsoft tem um blog dedicado à renderização de texto no WPF aqui Blog de texto WPF

As coisas definitivamente melhoraram no .NET 4.0.

Desloque os objetos que você desenha, que não deseja que sejam suavizados, em 0,5px.Isso fará com que o mecanismo de desenho desenhe sobre os pixels reais, em vez de desenhar na borda dos pixels (que é o padrão).Ao desenhar na borda de um pixel, o antialiasing normalmente ocorre nos pixels adjacentes.

Isso é semelhante ao desenho Quarts no Mac.

Editar:Desculpe, não li a pergunta.Isso não funciona para fontes, apenas para formas.Vou deixar o comentário aqui para referência, no entanto.

Tente usar o UIElement.SnapsToDevicePixels propriedade nos elementos da interface do usuário da sua janela.As pessoas tendem a relatar que funciona melhor para gráficos e linhas, mas também notei melhorias na renderização de texto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top