zoukankan      html  css  js  c++  java
  • GdiPlus[24]: IGPPrivateFontCollection: 分别从文件和内存加载字体


    IGPPrivateFontCollection.AddFontFile: 从文件加载字体;

    IGPPrivateFontCollection.AddMemoryFont: 从内存加载字体

    AddFontFile 测试:

    uses GdiPlus;
    
    function GetFontsDirectory: string;
    var
      Len: Integer;
      buf: array[0..MAX_PATH-1] of Char;
    begin
      GetWindowsDirectory(buf, Length(buf));
      Result := buf + '\Fonts\';
    end;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      FontCollection: IGPPrivateFontCollection;
      FontFamily: IGPFontFamily;
      Font: IGPFont;
      Graphics: IGPGraphics;
      Brush: IGPSolidBrush;
      Point: TGPPointF;
    begin
      FontCollection := TGPPrivateFontCollection.Create;
      FontCollection.AddFontFile(GetFontsDirectory + 'msyh.ttf');   //微软雅黑
      FontCollection.AddFontFile(GetFontsDirectory + 'simhei.ttf'); //黑体
      FontCollection.AddFontFile(GetFontsDirectory + 'SIMLI.TTF');  //隶书
      FontCollection.AddFontFile(GetFontsDirectory + 'simkai.ttf'); //楷体 GB2312
    
      Graphics := TGPGraphics.Create(Handle);
      Brush := TGPSolidBrush.Create(TGPColor.Red);
      Point.Initialize(10, 10);
      for FontFamily in FontCollection.Families do
      begin
        Font := TGPFont.Create(FontFamily, 16, FontStyleRegular, UnitPixel);
        Graphics.DrawString(FontFamily.FamilyName, Font, Point, Brush);
        Point.Y := Point.Y + Font.GetHeight(0); //参数是 0 或 nil 时, 字体建立是必须指定 UnitPixel
      end;
    end;
    

    AddMemoryFont 测试:

    uses GdiPlus;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Stream: TMemoryStream;
      FontCollection: IGPPrivateFontCollection;
      FontFamily: IGPFontFamily;
      Font: IGPFont;
      Graphics: IGPGraphics;
      Brush: IGPSolidBrush;
      Point: TGPPointF;
    begin
      Stream := TMemoryStream.Create;
      Stream.LoadFromFile('C:\Windows\Fonts\msyhbd.ttf');
    
      FontCollection := TGPPrivateFontCollection.Create;
      FontCollection.AddMemoryFont(Stream.Memory, Stream.Size);
      FontFamily := FontCollection.Families[0];
    
      Font := TGPFont.Create(FontFamily.FamilyName, 24);
      Brush := TGPSolidBrush.Create(TGPColor.Create(0, 0, 0));
      Point.Initialize(10, 10);
      Graphics := TGPGraphics.Create(Handle);
    
      Graphics.DrawString(FontFamily.FamilyName, Font, Point, Brush);
    
      Stream.Free;
    end;
    

  • 相关阅读:
    【转载】震惊了!原来这才是kafka!
    Django model层之执行原始SQL查询
    Django model 层之聚合查询总结
    Django 不通过外键实现多表关联查询
    Django model 层之Making Query总结
    Python 基于Python生成短8位唯一id解决方案
    Python shortuuid生成库学习小结
    Django model 层之Models与Mysql数据库小结
    Django Template层之自定义tag
    Django 通过自定义context_processors实现自定义tag
  • 原文地址:https://www.cnblogs.com/del/p/1624924.html
Copyright © 2011-2022 走看看