2010-12-14 12 views
2

Ich verwende GDI, um Text auf einen Gerätekontext zu zeichnen, und ich bemerkte, dass die Kerning oder Zeichenplatzierung unterschiedlich ist, wenn der Winkel genau 0, 90, 180 oder 270 ist. Sobald ich den Winkel um 1 vergrößere, unterscheidet sich die Zeichenplatzierung merklich.Verwenden von Win32 TextOut zum Zeichnen von Text in einem Winkel

Anstatt eine HFONT mit dem Winkel zu erstellen, verwende ich ModifyWorldTransform, um die Weltkoordinaten des Gerätekontextes zu transformieren, und dann verwende ich TextOut, um den Text auf den Gerätekontext zu zeichnen.

Ich denke, dass GDI Schriftart Tipps oder eine andere spezielle Technik verwendet, wenn der Text mit genauen Vielfachen von 90 Grad gezeichnet wird, aber nicht für einen anderen Winkel.

Gibt es eine Möglichkeit, dieses Hinting zu deaktivieren, so dass Text, der bei 0 Grad gerendert wird, sich nicht wesentlich von Text unterscheidet, der bei 1 Grad gerendert wird?

Hier ist ein Beispiel dafür, was ich meine (Monotypie Corsiva Schrift):

0 Grad:
0 degrees

1 Grad:
1 degree

Für einige Schriftarten, wie als Arial oder Tahoma ist es nicht so auffällig, aber ich würde den Unterschied gerne ganz loswerden, auch wenn es sich um einen Unterschied handelt ns der Text wird nicht so gut wie möglich gerendert.

Antwort

1

Ich denke, dies ist eher auf Anti-Aliasing als Schriftart Hinweise. Sie könnten Folgendes versuchen:

  • Deaktivieren Sie (Schriftart) AA, aber dies wird nicht zu akzeptablen Ergebnissen führen.
  • Erstellen Sie Schriftarten für jeden möglichen Winkel und sehen Sie, ob das Problem weiterhin besteht. Ich nehme an, es ist nicht so, aber es ist keine schöne Lösung.
  • Rendern Sie den Text in eine Bitmap (z. B. mit CreateCompatibleBitmap()) rendern Sie den Text, und rendern Sie dann die gedrehte Bitmap. Dies hängt davon ab, wie oft Sie verschiedene Rotationen/unterschiedlichen Text benötigen.
  • Spielen mit fdwOutputPrecision und fdwQuality in CreateFont(). Dies könnte die einfachste Lösung sein, aber Sie müssten ein wenig experimentieren.

hth

+0

Danke für die Ideen, aber leider auch wenn ich AA zu deaktivieren, ist das Ergebnis das gleiche (mit Ausnahme der Text ist kein Anti-Aliasing). Wenn ich an der Präzision/Qualität von CreateFont herumhändere, ändert sich auch das Ergebnis nicht :(Ich denke, ich werde es erst einmal hinnehmen und es beheben müssen, wenn das Management mich darum bittet. – dreamlax