【转】WinAPI: CreateFontIndirect – 根据字体结构建立逻辑字体

【转】WinAPI: CreateFontIndirect – 根据字体结构建立逻辑字体//声明:CreateFontIndirect(constp1:TLogFont{字体结构}):HFONT;{返回新字体指针}//TLogFont是tagLOGFONTA结构的重定义:tagLOGFONTA=packedrecordlfHeight:Longint;{字

大家好,欢迎来到IT知识分享网。【转】WinAPI:

//声明:
CreateFontIndirect(
  const p1: TLogFont {字体结构}
): HFONT;            {返回新字体指针}

//TLogFont 是 tagLOGFONTA 结构的重定义:
tagLOGFONTA = packed record
  lfHeight: Longint;      {字体高度}
  lfWidth: Longint;       {字体平均宽度}
  lfEscapement: Longint;  {角度, 单位是 1/10 度}
  lfOrientation: Longint; {基线角度}
  lfWeight: Longint;      {粗体, 取值: 0-1000}
  lfItalic: Byte;         {斜体}
  lfUnderline: Byte;      {下划线}
  lfStrikeOut: Byte;      {删除线}
  lfCharSet: Byte;        {字符集}
  lfOutPrecision: Byte;   {输出精度}
  lfClipPrecision: Byte;  {剪裁精度}
  lfQuality: Byte;        {输出质量}
  lfPitchAndFamily: Byte; {间距及字族}
  lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar; {字样名称}
end;

以上是要用到的一个数据结构,unit windows.

使用方法详细:

  {定义字体特征}
  FontInfo.lfHeight := 0;     {赋值 0, 系统自动给一个值}
  FontInfo.lfWidth := 0;      {赋值 0, 系统自动给一个值}
  FontInfo.lfEscapement := 0; {无角度}
  FontInfo.lfWeight := 500;   {中等加粗}
  FontInfo.lfItalic := 0;     {非斜体}
  FontInfo.lfUnderline := 0;  {无下划线}
  FontInfo.lfStrikeOut := 0;  {无删除线}
  FontInfo.lfFaceName := '宋体';
  
  FH1 := CreateFontIndirect(FontInfo);
  FH2 := SelectObject(Canvas.Handle, FH1);
  {用 CreateFontIndirect 建立逻辑字体; 用 SelectObject 选人设备; 并返回字体句柄}
  
  TextOut(Canvas.Handle, X, Y, str, Length(str));
  
  DeleteObject(FH1);
  DeleteObject(FH2);

 

详细:万一的博客

想要循环的文字:改变属性Escapement,循环输出

注意点:

FH1 := CreateFontIndirect(FontInfo); FH2 := SelectObject(Canvas.Handle, FH1);

这两个用完以后要及时删除!!

DeleteObject(FH1); DeleteObject(FH2);

  

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33870.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信