Anti-Aliase-Text in einem transparenten .NET-Formular

8

Ich habe eine C # -Anwendung, die die aktuelle Zeit in a zeigt transparentes .NET-Formular. Das Formular enthält keine Steuerelemente und keine Rahmen. Seine Eigenschaft TransparencyKey ist auf die Hintergrundfarbe des Formulars eingestellt "hellgrau" um es transparent zu machen.
So kann der Benutzer nur den Text (aktuelle Uhrzeit) sehen.

Der Text wird in PaintEventHandler gezeichnet:

%Vor%

Aufgrund des Anti-Aliasing wird der Text "00:00:00" ausgefranst wenn der Form ist über einem dunklen Hintergrund. Für helle Hintergründe ist der Text o.k.

Dieses Bild zeigt das Problem und den guten Fall:

Text zeigt Fransen aufgrund von Anti-Aliasing für dunklen Hintergrund http: //www.habermann-net. de / public / entwicklung / antiAliasing_bad.png

Offensichtlich rendert Windows den Text so, dass er zu dem passt Forms eigene Hintergrundfarbe und nicht in einer Weise, dass es passt Hintergrund, der hinter der transparenten Form steht.

Ist es möglich, dass Windows den Hintergrund hinterlässt? das Formular beim Rendern des Textes berücksichtigen, damit ich es bekomme die Fransen loswerden?

Eine "Lösung" könnte sein, das Anti-Aliasing durch Setzen von TextRenderingHint zu deaktivieren entsprechend. Aber bis jetzt ist das nicht meine bevorzugte "Lösung".

System:
Windows XP, SP 3, .NET 3.5, VS 2008

    
Habi 20.10.2009, 20:02
quelle

2 Antworten

1

Ich habe vor einigen Monaten eine ähnliche Frage gestellt.

Was ich am Ende gemacht habe, war zwei Optionen:

  1. Kopieren Sie den Hintergrund hinter der Anwendung, indem Sie die Deckkraft vorübergehend auf 0 setzen und dann einen antialiasierten Text darauf zeichnen. Dieser Ansatz funktioniert gut, wenn sich das Fenster und die darunter liegenden Fenster nicht häufig bewegen.
  2. Verwenden eines überlagerten Fensters . Funktioniert besser als TransparencyKey, funktioniert aber am besten mit nicht antialiasiertem Text. (Vermeiden Sie die Verwendung einer ClearType-Schriftart, und Sie werden es schaffen)
iano 20.10.2009, 20:17
quelle
-1

Versuchen Sie dies in Ihrer Display_Paint-Methode:

%Vor%     
Jim Schubert 21.10.2009 01:03
quelle

Tags und Links