WinAPI: GetCharABCWidths - 获取 TrueType 字符的宽度信息

//声明:
GetCharABCWidths(
  DC: HDC;                   {设备环境句柄}
  FirstChar, LastChar: UINT; {范围内的第一个和最后一个字符值}
  const ABCStructs           {接受每个字符信息的 TABC 结构数组}
): BOOL;

//TABC 类型是 _ABC 结构的重定义:
_ABC = packed record
  abcA: Integer; {左间距}
  abcB: UINT;    {字宽}
  abcC: Integer; {右间距}
end;

{GetCharABCWidths 只用于 TrueType 字体}

 
 
 
 
 

 

 

  

//获取当前字体所有大写字母三个宽度信息(用Memo显示)
procedure TForm1.FormCreate(Sender: TObject);
var
  arr: array[0..25] of TABC;
  i: Integer;
begin
  GetCharABCWidths(Canvas.Handle, Ord('A'), Ord('Z'), arr);

  Memo1.Clear;
  Memo1.Lines.Add('字符'#9'A'#9'B'#9'C');
  
  for i := 0 to 25 do
  begin
    Memo1.Lines.Add(
      Char(Ord('A')+i) + #9 + 
      IntToStr(arr[i].abcA) + #9 +
      IntToStr(arr[i].abcB) + #9 +
      IntToStr(arr[i].abcC) + #9
    );
  end;
end;

 
 
 
 
 

 

 

  

//效果图:
26154030_fmDe.png

转载于:https://my.oschina.net/hermer/blog/320952

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值