2009-03-05 9 views
1

Ich finde, ich kann das Schriftgewicht nicht ändern, obwohl ich es über win32 pinvoke erstelle. Ich verwende Graphics.DrawString, um die Schriftart zu verwenden. Ich bin ratlos und kann nichts finden.System.Drawing: Wie steuert man das Schriftgewicht?

[DllImport("gdi32.dll")] 
static extern IntPtr CreateFont(int nHeight, int nWidth, int nEscapement, 
    int nOrientation, int fnWeight, uint fdwItalic, uint fdwUnderline, uint 
    fdwStrikeOut, uint fdwCharSet, uint fdwOutputPrecision, uint 
    fdwClipPrecision, uint fdwQuality, uint fdwPitchAndFamily, string lpszFace); 

private void CreateLabelFont() 
{ 
    // Remove -13 magic number later. 
    IntPtr hFont = CreateFont(-13, 0, 0, 0, 100, 0, 0, 0, 1, 0, 0, 0, 0, "Arial\0"); 
    labelFont = Font.FromHfont(hFont); 
} 

Antwort

1

Von MSDN Referenz für CreateFont:

fnWeight [in] Gibt das Gewicht der Schrift im Bereich von 0 bis 1000. Zum Beispiel ist 400 und 700 ist fett. Wenn dieser Wert Null ist, wird ein Standardgewicht verwendet.

Das bedeutet, Sie korrigieren das Gewicht, wenn Sie eine Schriftart erstellen. Falls Sie unterschiedliche Schriftgewichte benötigen, müssen Sie mehrmals die Nummer CreateFont anrufen.

+0

Und der mitgelieferte Code mit FnWeight = 700 zeigt Fettschrift wie erwartet an. –

+0

Die Art, wie ich es habe, sollte funktionieren. Ich glaube, ich könnte ein Problem mit der komplexen Grafik-Transformation haben, wenn ich die Schriftart zeichne. –

+0

Dann zeigen Sie uns etwas mehr Code. Und überprüfen Sie die Rückgabewerte. – dirkgently