专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » GdiPlus[24]: IGPPrivateFontCollection: 分别从文件和内存加载字体 »正文

GdiPlus[24]: IGPPrivateFontCollection: 分别从文件和内存加载字体

来源: 发布时间:星期四, 2009年12月17日 浏览:0次 评论:0


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

  IGPPrivateFontCollection.AddMemoryFont: 从内存加载字体

  AddFontFile 测试:

uses GdiPlus; 
 
function GetFontsDirectory: ; 
var 
 Len: Integer; 
 buf: .gif' />[0 ..MAX_PATH-1 ] of Char; 
begin 
 GetWindowsDirectory(buf, Length(buf)); 
 Result := buf + '\Fonts\'; 
end; 
 
procedure TForm1.FormPa(Sender: TObject); 
var 
 FontCollection: IGPPrivateFontCollection; 
 FontFamily: IGPFontFamily; 
 Font: IGPFont; 
 Graphics: IGPGraphics; 
 Brush: IGPSolidBrush; 
 Po: TGPPoF; 
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); 
 Po.Initialize(10, 10); 
 for FontFamily in FontCollection.Families do 
 begin 
  Font := TGPFont.Create(FontFamily, 16, FontStyleRegular, UnitPixel); 
  Graphics.DrawString(FontFamily.FamilyName, Font, Po, Brush); 
  Po.Y := Po.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; 
 Po: TGPPoF; 
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)); 
 Po.Initialize(10, 10); 
 Graphics := TGPGraphics.Create(Handle); 
 
 Graphics.DrawString(FontFamily.FamilyName, Font, Po, Brush); 
 
 Stream.Free; 
end; 


标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: