2010-05-11 12 views
14

Bei der Betrachtung der Konstruktoren für die System.Drawing.Font-Klasse gibt es einen Parameter, der in einem der in der System.Drawing.FontStyle-Enumeration definierten FontStyles übergeben wird.Wie man mehrere FontStyles beim Instanziieren einer Schriftart einstellt?

dh. Bold Italic Regular Unterstrichen

und es gibt boolean Eigenschaften für Fett, Kursiv, Unterstrichen usw. im instanzierte Objekt, aber sie sind nur lesen.

Was ist, wenn ich meine Schriftart so definieren möchte, dass sie mehrere Stile wie Bold und Underline enthält?

Wie kann ich das tun?

Antwort

31

Die FontStyle enum ist eine Flags enum. Das bedeutet, dass seine Mitglieder alle Zweierpotenzen sind, sodass Sie sie mit einem binären ODER kombinieren können.

Zum Beispiel, wenn Sie fett wollen und unterstreichen, würden Sie passieren

FontStyle.Bold | FontStyle.Underline 

Der vertikale Balken (|) die binäre OR-Operator ist.

+0

Arbeitete perfekt danke! Diese Art von Dingen sind für uns Java-Junkies neue Konzepte. – anon58192932

10

Im Font-Konstruktor können Sie mehrere Fontstyles mit dem OR-Operator kombinieren:

Font font = new Font(this.Font, FontStyle.Bold | FontStyle.Underline); 
0

Sie so etwas wie dies nutzen könnten, um für jeden Fall mehrere ifs zu vermeiden:

//define a font to use. 
Font font; 

font = new Font(fontname, fontsize, GraphicsUnit.Pixel); 

if (bold) 
    font = new Font(font, font.Style^FontStyle.Bold); 
if (italic) 
    font = new Font(font, font.Style^FontStyle.Italic); 
if (underline) 
    font = new Font(font, font.Style^FontStyle.Underline); 
if (strikeout) 
    font = new Font(font, font.Style^FontStyle.Strikeout); 
+0

Das ist schrecklich ineffizient ... Verwenden Sie die Flags Enum, um mehrere Stile gleichzeitig festzulegen. – Tim

Verwandte Themen