Tôi đã viết một ứng dụng nhỏ vẽ văn bản trên hình ảnh trong bộ nhớ và ghi chúng vào tệp. Mã Delphi cơ bản trông giống như:Làm cách nào để ghi đè cài đặt ClearType khi vẽ văn bản bằng API Win32?
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;
Thật không may văn bản được vẽ khác nhau tùy thuộc vào cài đặt ClearType của máy tính đang chạy ứng dụng. Tôi muốn có một đầu ra nhất quán trong ứng dụng của tôi bất kể thiết lập ClearType cục bộ (đầu ra không được hiển thị trực tiếp trên màn hình). Có một số tùy chọn Win32 API để ghi đè lên các thiết lập ClearType cục bộ?
Bạn cũng có thể sử dụng chất lượng chống răng cưa, chất lượng hiển thị với tính năng chống răng cưa kiểu cũ - nghĩa là không có Cleartype. Điều đó mang lại cho bạn văn bản có chất lượng tốt sẽ trông đẹp hơn so với văn bản được vẽ mà không làm phông chữ nào mượt mà. –