Aero: Como desenhar texto ClearType no vidro?
-
27-09-2019 - |
Pergunta
Usando o GDI+ para desenhar texto no vidro:
graphics.DrawString(s, Length(s), font, MakePointF(x, y), brush);
Você notará que o texto habilitado para o ClearType desenha muito mal no vidro:
Mas com vidro desativado o texto, é claro, desenhe bem:
A título de comparação aqui é A suavização de fontes anti-Alias:
E aqui está Sem suavização de fontes:
Observação: Nenhuma suavização de fontes parece melhor do que realmente, porque o StackOverflow redimensiona as imagens no seu monitor.
Como faço para desenhar um texto do ClearType no vidro?
Notas
- Win32 Nativo
- Não .NET (ou seja nativo)
- não winforms (ou seja nativo)
- GDI+ (ou seja nativo)
O que Mark está sugerindo é que você não pode honrar as preferências do usuário por renderização de texto (ou seja, "SystemDefault
". O ClearType não funciona no vidro e você não pode usá -lo.
Em outras palavras, se você está representando o vidro, você deve substituir o texto renderizando:
graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
Caso contrário, você deve deixar o TextRenderingHint
no seu padrão TextRenderingHintSystemDefault
.
Veja também
Solução
O problema é inerente à maneira como o desenho é realizado. Todo o seu texto está sendo desenhado em um fundo preto e depois compositado em um fundo de vidro; A suavização semi-transparente de fontes está sendo combinada com preto para ficar quase preto.