• 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;
    

  • 相关阅读:
    Java设计模式——装饰器模式
    Java设计模式——观察者模式
    Java设计模式——代理模式
    Java设计模式——适配器模式
    Java设计模式——建造者模式
    Java项目——聊天器
    Java设计模式——抽象工厂模式
    JDBC操作(总结)
    JDBC操作(大纲)
    JavaScript事件委托的技术原理
  • 原文地址:https://www.cnblogs.com/del/p/1624924.html
Copyright © 2020-2023  润新知