J'ai une application C# qui affiche l'heure actuelle dans un formulaire .NET transparent . Le formulaire n'a aucun contrôle et aucune bordure. Sa propriété TransparencyKey est définie sur la couleur de fond du formulaire "gris clair" pour le rendre transparent.
Ainsi, l'utilisateur ne peut voir que le texte (heure actuelle).Texte anti-aliasé dans un formulaire .NET transparent
Le texte est rédigé dans le PaintEventHandler:
private void Display_Paint(object sender, PaintEventArgs e)
{
Graphics formGraphics = e.Graphics;
Font myFont = new Font("Microsoft Sans Serif", 24, FontStyle.Bold);
formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
//formGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
formGraphics.DrawString("00:00:00", myFont, Brushes.Green, 0.0F, 0.0F);
myFont.Dispose();
}
En raison de l'anti-aliasing le texte « 00:00:00 » apparaît effiloché lorsque le formulaire est sur un fond sombre. Pour les arrière-plans clairs, le texte est o.k.
Cette image montre le problème et le bon cas:
Il est évident que Windows ne rend le texte d'une manière qu'il convient à votre propre couleur d'arrière-plan de formulaire et non d'une manière qu'il convient à l'arrière-plan qui se trouve derrière la forme transparente.
Est-il possible de laisser Windows prendre l'arrière-plan le formulaire en compte lors du rendu du texte pour que je me débarrasser des franges? Une "solution" pourrait être de désactiver l'anti-aliasing en définissant TextRenderingHint en conséquence. Mais jusqu'à présent, ce n'est pas ma "solution" préférée.
Système:
Windows XP, SP 3, .NET 3.5, VS 2008
Merci pour la pointe, mais la définition du style ne permet pas. – Habi
Je voudrais en savoir plus sur la partie de copie – pastapockets
En fait j'ai fait quelques recherches, semble que je cherchais CopyFromScreen, http://stackoverflow.com/questions/715094/how-do-i-capture-the-current -screen-as-an-image – pastapockets