Aerodinamico:Come disegnare il testo ClearType sul vetro?
-
27-09-2019 - |
Domanda
Utilizzo di GDI+ per disegnare testo sul vetro:
graphics.DrawString(s, Length(s), font, MakePointF(x, y), brush);
Noterai che il testo abilitato per ClearType viene disegnato molto male sul vetro:
Ma con il vetro disabilitato il testo, ovviamente, disegna bene:
A titolo di confronto ecco Smussamento dei caratteri anti-alias:
Ed ecco nessun livellamento dei caratteri:
Nota:Nessun livellamento dei caratteri sembra migliore di quanto non sia in realtà perché StackOverflow ridimensiona le immagini sul tuo monitor.
Come faccio a disegnare il testo ClearType sul vetro?
Appunti
- Win32 nativo
- non .NET (cioè. nativo)
- non Winforms (cioè. nativo)
- GDI+ (cioè. nativo)
Ciò che Mark suggerisce è che non è possibile rispettare le preferenze dell'utente per il rendering del testo (ad es."SystemDefault
".ClearType non funziona sul vetro e non è possibile utilizzarlo.
In altre parole, se stai eseguendo il rendering su vetro devi sovrascrivere il rendering del testo con:
graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
Altrimenti dovresti lasciare il file TextRenderingHint
al suo valore predefinito TextRenderingHintSystemDefault
.
Guarda anche
Soluzione
Il problema è inerente al modo in cui viene eseguito il disegno.Tutto il testo viene disegnato su uno sfondo nero, quindi composto su uno sfondo di vetro;lo smussamento del carattere semitrasparente viene combinato con il nero per renderlo quasi nero.