我寫了一個小應用程序,它在內存映像上繪製文本並將它們寫入文件。基本德爾福代碼類似於:如何在使用Win32 API繪圖文本時覆蓋ClearType設置?
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設置如何(輸出不會直接顯示到屏幕上)。是否有一些Win32 API選項可以覆蓋本地ClearType設置?
您還可以使用抗鋸齒質量,該抗鋸齒質量可以使用舊式抗鋸齒進行渲染 - 即不使用Cleartype。這給你體面的質量文本,看起來比沒有任何字體平滑繪製的文本更好。 – 2013-02-25 16:25:04