O problema é descrito e demonstrado nos seguintes links:
- Paul Stovell WPF: renderização de texto embaçado
- www.gamedev.net forum
- Microsoft Connect: o renderizador de texto WPF produz um texto desfocado ruim em tamanhos de fonte pequenos
Explicação: Clareza do texto no WPF . Este link tem comparação de fontes.
Gostaria de coletar todas as soluções possíveis para esse problema. O Microsoft Expression Blend usa WPF, mas as fontes parecem legíveis.
- Fundo escuro como no Microsoft Expression Blend
- Aumentando o tamanho da fonte e alterando a fonte (Calibri ...) [link]
- Incorporar formulários do Windows [link]
- Use a classe GDI + e / ou Windows Forms TextRenderer para renderizar texto em um bitmap e, em seguida, renderize esse bitmap como um controle WPF. [ligação]
Existem mais soluções?
Isso será corrigido no VS2010 (e WPF4) beta 2
Parece que foi finalmente resolvido!
ComputerZen.com de Scott Hanselman: WPF e Text Blurriness, agora com total clareza
Respostas:
Formação técnica
Há um artigo detalhado sobre a renderização de texto WPF de um dos gerentes de programa de texto do WPF no windowsclient.net: Claridade de texto no WPF .
O problema se resume ao WPF que precisa de um renderizador de fonte de escala linear para animações suaves. O Pure ClearType, por outro lado, requer bastante liberdade com a fonte para inserir hastes verticais no próximo pixel.
A diferença é óbvia se compararmos o padrão clássico de "cascata". WinForms no lado inferior esquerdo, WPF no lado superior direito:
Embora eu também não seja fã das idiossincrasias de renderização de fontes do WPF, posso imaginar o clamor se as animações saltariam como na cascata Winforms.
Brincando com o registro
De especial interesse para mim, foi o link para o artigo do MSDN " Configurações do Registro ClearType ", que explica os possíveis ajustes do lado do usuário no registro:
Brincar com essas configurações realmente não melhorou o problema subjacente, mas pode ajudar reduzindo o efeito de sangramento de cores para usuários sensíveis.
Outra abordagem
O melhor conselho que o artigo Text Clarity deu foi aumentar o tamanho da fonte e alterá-la. O Calibri funciona melhor para mim do que a interface do usuário padrão do Segoe. Devido à sua popularidade como fonte da web, tentei o Verdana também, mas ele tem um salto desagradável entre 14 e 15 pontos, o que é muito visível ao animar o tamanho da fonte.
WPF 4.0
O WPF 4 terá suporte aprimorado para influenciar a renderização de fontes. Há um artigo no Blog de texto do WPF explicando as alterações. Mais importante, agora existem (pelo menos) três tipos diferentes de renderização de texto:
<grumble> Isso deve ser corda suficiente para todo designer. </grumble>
fonte
Finalmente, o .NET 4 tem uma solução para a baixa qualidade de renderização de texto do WPF, mas está bem oculta. Defina o seguinte para cada janela:
O valor padrão é "Ideal", que não é exatamente o que o nome indica.
Existem duas outras opções no TextOptions, a saber TextHintingMode e TextRenderingMode, mas ambas possuem padrões sensíveis.
fonte
Encontrei um problema no outro dia quando usei uma borda que tinha um DropShadowEffect aplicado. O resultado foi que todo o texto dentro dessa borda estava extremamente embaçado. Não importa se o texto estava dentro de outros painéis ou diretamente abaixo da borda - qualquer bloco de texto filho do pai ou mãe que tenha um Efeito aplicado parece ser afetado.
A solução para esse caso específico foi não colocar coisas dentro da borda que produz efeitos, mas usar uma grade (ou qualquer outra coisa que suporte a colocação de conteúdo umas sobre as outras) e colocar um retângulo na mesma célula que o texto (por exemplo, como um irmão na árvore visual) e colocar os efeitos nisso.
Igual a:
fonte
Isso será corrigido no VS2010 (e WPF4) beta 2:
fonte
SnapToDevicePixels se aplica apenas a formas WPF (linhas, etc.), não a renderizador de texto.
Não há solução alternativa conhecida para esse problema. Segundo a Microsoft, o comportamento é "por design".
Veja também este tópico nos fóruns da Microsoft que discutem os problemas - ele recebeu algumas respostas dos funcionários da MS que esclarecem sua posição sobre o assunto.
fonte
Do ponto de vista de um desenvolvedor, a única "solução alternativa" conhecida até o momento é usar a classe GDI + e / ou Windows Forms TextRenderer para renderizar texto em um bitmap e, em seguida, processar esse bitmap como um controle WPF. Além das implicações óbvias de desempenho, isso não alivia o problema dos aplicativos existentes.
Agora criei um tíquete do Microsoft Connect para esse problema (para minha surpresa, apesar de toda a negatividade, não havia nenhum relatório de bug real no rastreador designado).
Como esse é um dos canais oficiais de comunicação de solicitações e perguntas para a Microsoft, eu recomendaria também analisá-lo para obter uma resposta mais rápida. Pelo menos, se você deseja que o problema seja resolvido de uma maneira ou de outra, votar nesse ticket e / ou validar o problema ajudará a chamar a atenção dos PMs e engenheiros da Microsoft para esse problema e, possivelmente, aumentará sua prioridade percebida.
fonte
Não o vejo como um bug, mas a configuração padrão é realmente muito irritante. Aqui está uma comparação de todas as combinações de
SnapToDevicePixels
não faz diferença na renderização do texto.Eu prefiro:
onde as linhas verticais nunca ficam embaçadas.
A fonte usada é Open Sans Light, que pode ser realmente bonita se for bem usada, como no TeamViewer mais recente.
Para aqueles que usam o Mahapps.Metro, o problema é o
TransitioningContentControl
https://github.com/MahApps/MahApps.Metro/issues/889fonte
Acabei de experimentar a versão beta do VS2010, que é feita no WPF, e sofre muito com o problema de fontes borradas. Particularmente nas dicas de ferramentas.
Isso parece dar alguma evidência de que o WPF4 na verdade não resolverá o problema (se parecer pior)
fonte
Uau, não acredito que finalmente consegui ler minhas fontes WPF. E também não acredito que não exista uma caixa de diálogo para facilitar essas alterações, enquanto os valores padrão são horríveis no meu monitor.
Essas configurações do registro (em decimal) funcionaram para mim e se aproximam da minha fonte normal de tipo claro:
fonte
Eles dizem que "SnapToDevicePixels = true" funciona, mas nunca vi bons resultados.
Combato o texto desfocado mudando para uma fonte diferente.
Obviamente, isso não é uma solução para o problema, mas é assim que eu trabalhei em torno dele.
fonte
Se você preferir usar uma classe base C # para personalizar janelas para o seu aplicativo (ou agora tiver um motivo para), veja como você pode definir a formatação do texto para usar o atraente modo de exibição:
fonte