Ich habe eine C# -Anwendung, die die aktuelle Uhrzeit in einem transparenten .NET-Formular zeigt. Das Formular enthält keine Steuerelemente und keine Rahmen. Die Eigenschaft TransparencyKey ist auf die Hintergrundfarbe des Formulars "hellgrau" eingestellt, um es transparent zu machen.
So kann der Benutzer nur den Text (aktuelle Uhrzeit) sehen.Anti-Aliased Text in einem transparenten .NET-Formular
Der Text in der Paint gezogen wird:
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();
}
Durch das Anti-Aliasing den Text "00:00:00" ist ausgefranst gezeigt, wenn die Formular über einen dunklen Hintergrund ist. Für helle Hintergründe ist der Text o.k.
Dieses Bild zeigt das Problem und die guten Fall:
Offensichtlich funktioniert Windows den Text in einer Art und Weise machen, dass es in den Farb Formular eigenen Hintergrund passt und nicht in einer Weise, dass es passt zum Hintergrund, der hinter der transparenten Form ist.
Ist es möglich, Windows den Hintergrund hinter das Formular berücksichtigen zu lassen, wenn der Text so gerendert wird, dass ich los von den Fransen bekomme?
Eine "Lösung" könnte sein, das Anti-Aliasing durch entsprechendes Setzen von TextRenderingHint abzuschalten. Aber bis jetzt ist das nicht meine bevorzugte "Lösung".
System:
Windows XP, SP 3, fragte .NET 3.5, VS 2008
Vielen Dank für die Spitze, aber die Einstellung des Stils hilft nicht. – Habi
Ich würde gerne mehr über das Kopieren von Teilen wissen – pastapockets
Eigentlich habe ich etwas gesucht, scheint ich nach CopyFromScreen, http://stackoverflow.com/questions/715094/how-do-i-capture-the-current gesucht -screen-als-ein-Bild – pastapockets