メモリ内の画像にテキストを描画してファイルに書き込む小さなアプリケーションを作成しました。基本的な Delphi コードは次のようになります。
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;
残念ながら、アプリケーションを実行しているコンピューターの ClearType 設定によって、描画されるテキストが異なります。ローカルの ClearType 設定に関係なく、アプリケーションで一貫した出力が必要です (いずれにせよ、出力は画面に直接表示されません)。ローカルの ClearType 設定をオーバーライドするための Win32 API オプションはありますか?