Ich habe eine kleine Anwendung geschrieben, die Text auf In-Memory-Bildern zeichnet und in Dateien schreibt. Der grundlegende Delphi-Code sieht folgendermaßen aus:
%Vor%Leider unterscheidet sich der gezeichnete Text je nach ClearType-Einstellung des Computers, auf dem die Anwendung ausgeführt wird. Ich möchte eine konsistente Ausgabe in meiner Anwendung haben, unabhängig von der lokalen ClearType-Einstellung (die Ausgabe wird sowieso nicht direkt angezeigt). Gibt es eine Win32-API-Option zum Überschreiben der lokalen ClearType-Einstellungen?
Die Schriftglättung von Text wird durch die Schriftart bestimmt, die Sie in das Gerät auswählen. Weitere Informationen zu den Optionen, die von der Raw-Win32-Benutzeroberfläche angeboten werden, finden Sie in der LOGFONT
Dokumentation.
In Delphi ist die zugrunde liegende Win32-API-Font-API von der Klasse TFont
umschlossen. Die Eigenschaft, die für diese Frage relevant ist, ist Quality
. Der Standardwert ist fqDefault
, der die systemweite Schriftglättungseinstellung verwendet. Sie möchten Quality
entweder auf fqAntialiased
oder fqNonAntialiased
setzen.
Ältere Versionen von Delphi haben diese Eigenschaft nicht. In diesem Fall müssen Sie CreateFontIndirect
aufrufen, um ein HFONT
mit den erforderlichen Qualitätseinstellungen zu erstellen. Sie können diese Funktion , unmittelbar bevor Sie Text zeichnen:
Übergeben Sie je nach Bedarf entweder NONANTIALIASED_QUALITY
oder ANTIALIASED_QUALITY
.
Ich glaube, Sie können eine neue logische Schriftart erstellen, die keinen ClearType verwendet. Übergeben Sie das Flag NONANTIALIASED_QUALITY
als fdwQuality
-Parameter von CreateFont
:
Die Schriftart wird niemals antialiasiert, dh die Schriftglättung wird nicht durchgeführt.
Tags und Links windows delphi winapi delphi-2006