zoukankan      html  css  js  c++  java
  • 【转】WinAPI: CreateFontIndirect

    //声明:
    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);

      

  • 相关阅读:
    关于transition中嵌套keep-alive的问题解决
    vue-cli中使用全局less变量
    git 移除远程仓库关联
    当浏览器窗口大小发生变化时,重新绘制JsPlumb中的线条、端点
    事件循环详解
    React + Sass
    使用OpenSSL自签发SSL证书,支持chrome识别
    英汉翻译技巧之直译与意译、正说与反说、顺序法和逆序法
    英汉翻译技巧之拆句
    英语翻译时句子成分的转换
  • 原文地址:https://www.cnblogs.com/laymond/p/3392510.html
Copyright © 2011-2022 走看看