delphi – 如何绘制Unicode文本?

前端之家收集整理的这篇文章主要介绍了delphi – 如何绘制Unicode文本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在TCustomControl上绘制Unicode文本?没有画布还有其他选择吗?

解决方法

是的,你是对的.不过,我建议你升级到Delphi 2009或更高版本,其中VCL具有完全的Unicode支持,一切都更容易.

无论如何,你可以做到

procedure TMyControl.Paint;
var
  S: WideString;
  r: TRect;
begin
  inherited;
  r := ClientRect;
  S := 'This is the integral sign: '#$222b;
  DrawTextW(Canvas.Handle,PWideChar(S),length(S),r,DT_SINGLELINE or
    DT_CENTER or DT_VCENTER or DT_END_ELLIPSIS);
end;

在旧版本的Delphi中(我认为.代码在我的虚拟Windows 95机器中编译Delphi 7,但我看不到文本.这是因为我认为Windows 95太旧了.)

更新

如果你想支持非常旧的操作系统,比如Windows 95和Windows 98,你需要使用TextOutW而不是DrawTextW,因为后者没有实现(source).TextOut的功能不如DrawText,所以你需要手动计算位置例如,如果要将文本居中放置在矩形中.

procedure TMyControl.Paint;
var
  S: WideString;
begin
  inherited;
  S := 'This is the integral sign: '#$222b;
  TextOutW(Canvas.Handle,length(S));
end;

猜你在找的Delphi相关文章