Mam aplikację C#, która pokazuje bieżący czas w przezroczystym formularzu .NET . Formularz nie ma kontroli ani granicy. Właściwość TransparencyKey jest ustawiona na kolor tła formularza "jasnoszary", aby było przezroczyste.
Użytkownik może zobaczyć tylko tekst (aktualny czas).Tekst anty-aliasing w przezroczystym formularzu .NET
Tekst jest rysowane w 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();
}
Ze względu na anty-aliasing tekst „00:00:00” jest pokazany postrzępiony gdy formularz jest na ciemnym tle. W przypadku jasnego tła tekstem jest o.k.
Ten obraz pokazuje problem i dobrą sprawę:
Oczywiście Windows wykonuje renderowanie tekstu w sposób, który pasuje do forma własnego koloru tła, a nie w sposób, który pasuje do tła , które znajduje się za przezroczystym formularzem.
Czy możliwe jest uwzględnienie systemu Windows podczas tworzenia tekstu, aby uzyskać Formularz, aby uzyskać pozbyć się prążków?
Jednym z "rozwiązań" może być wyłączenie wygładzania poprzez odpowiednie ustawienie TextRenderingHint . Ale do tej pory nie jest to moje preferowane "rozwiązanie".
System:
Windows XP SP 3, .NET 3.5, VS 2008
Dziękuję za cynk, ale ustawieniu stylu nie pomaga. – Habi
Chciałbym dowiedzieć się więcej o części do kopiowania. – pastapockets
Właściwie to szukałem, wydaje mi się, że szukałem CopyFromScreen, http://stackoverflow.com/questions/715094/how-do-i-capture-the-current -ekran-jako-obraz-obraz – pastapockets