加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何绘制Unicode文本?

发布时间:2020-12-15 04:10:16 所属栏目:大数据 来源:网络整理
导读:如何在TCustomControl上绘制Unicode文本?没有画布还有其他选择吗? 解决方法 是的,你是对的.不过,我建议你升级到Delphi 2009或更高版本,其中VCL具有完全的Unicode支持,一切都更容易. 无论如何,你可以做到 procedure TMyControl.Paint;var S: WideString; r:
如何在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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读