Ich habe eine kleine Anwendung geschrieben, die Text auf In-Memory-Bildern zeichnet und sie in Dateien schreibt. Der grundlegende Delphi-Code ähnelt:Wie kann ich die ClearType-Einstellung beim Zeichnen von Text mithilfe der Win32-API überschreiben?
var
Canvas : tCanvas;
Text : WideString;
TextRect : tRect;
begin
Canvas := Bitmap.Canvas;
Canvas.Brush.Color := clBlack;
Canvas.Pen.Color := clBlack;
Canvas.Font.Name := 'Courier New';
Canvas.Font.Size := 11;
Canvas.Font.Color := clWhite;
TextRect := ...; // calculate text position
DrawTextW(Canvas.Handle, PWideChar(Text), Length(Text), TextRect, DT_NOCLIP or DT_NOPREFIX or DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;
Leider ist der gezeichnete Text unterscheidet je nach Einstellung Cleartype des Computers der 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, um die lokalen ClearType-Einstellungen zu überschreiben?
Sie können auch Anti-Aliased-Qualität verwenden, die mit Antialiasing im alten Stil rendert - also ohne Cleartype. Das gibt Ihnen einen anständigen Qualitätstext, der besser aussieht als ein Text, der überhaupt nicht gezeichnet wird. –