文档章节

Direct2D (35) : 通过 DirectWrite 获取字体列表

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 171
阅读 6
收藏 0

uses Direct2D, D2D1;

procedure TForm1.Button1Click(Sender: TObject);
var
  iFontCollection: IDWriteFontCollection;     //字体集合
  iFontFamily: IDWriteFontFamily;             //字族
  iLocalizedStrings: IDWriteLocalizedStrings; //按区域设置名称编制索引的字符串集合
  i,j: Integer;
  buf: array[0..LF_FACESIZE] of Char;
begin
  ListBox1.Clear;
  DWriteFactory.GetSystemFontCollection(iFontCollection);
  for i := 0 to iFontCollection.GetFontFamilyCount - 1 do
  begin
    iFontCollection.GetFontFamily(i, iFontFamily);
    iFontFamily.GetFamilyNames(iLocalizedStrings);
    for j := 0 to iLocalizedStrings.GetCount - 1 do
    begin
      iLocalizedStrings.GetString(j, buf, Length(buf));
      ListBox1.Items.Add(buf);
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  iFontCollection: IDWriteFontCollection;
  iFontFamily: IDWriteFontFamily;
  iLocalizedStrings: IDWriteLocalizedStrings;
  buf: array[0..LOCALE_NAME_MAX_LENGTH] of Char;
  cn: string;
  n: Cardinal;
  b: LongBool;
  i: Integer;
begin
  ListBox1.Clear;
  LCIDToLocaleName(GetUserDefaultLangID, buf, Length(buf), 0);
  cn := buf; //'zh-CN'
  DWriteFactory.GetSystemFontCollection(iFontCollection);
  for i := 0 to iFontCollection.GetFontFamilyCount - 1 do
  begin
    iFontCollection.GetFontFamily(i, iFontFamily);
    iFontFamily.GetFamilyNames(iLocalizedStrings);
    iLocalizedStrings.FindLocaleName(cn[1], n, b);
    if not b then Continue;
    iLocalizedStrings.GetString(n, buf, Length(buf));
    ListBox1.Items.Add(buf);
  end;
end;


效果图:



本文转载自:http://www.cnblogs.com/del/archive/2011/04/11/2012802.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
Direct2D教程(十)绘制文本

概述 在Direct2D中,文本的绘制是通过DirectWrite来实现的,DirectWrite实际上已经是一个独立的DirectX组件了。关于DirectWrite,我摘录了MSDN的一段文字。 DirectWrite介绍 当今的应用程序应...

吞吞吐吐的
2017/10/17
0
0
关于Direct3D11里汉字显示的一些思考

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/8147234 作者:毛星云 邮箱: happylifemxy@163.com 这篇文章里,浅墨希望与大家一起...

长平狐
2012/11/12
690
0
Windows桌面应用程序(1-2-4-7th) DPI和设备无关的像素

要使用Windows图形进行有效编程,您必须了解两个相关的概念: 每英寸点数(DPI) 设备无关像素(DIP)。 我们从DPI开始。这将需要短暂的绕行排版。在印刷术中,类型的大小以称为点的单位来测量。一点...

qq_37422196
01/12
0
0
深度解读 - Windows 7核心图形架构细致分析(转贴)

原帖地址:http://technet.microsoft.com/zh-cn/library/ee921514.aspx 如现在大家所想的那样, Windows7 其实是 Windows Vista 的改进版。 Windows 7 在 Windows Vista 的基础上进行了大量的...

迈克老狼1
2012/12/23
0
0
FireFox开发版本加入GPU加速文字渲染

全球第二大浏览器厂商FireFox在最近的nightlyBuilds 中加入了一项令人激动的功能——GPU加速网页文字渲染。通过该功能,不仅仅可以大幅度提升网页上文字渲染的速度,还可以让字体更加美观、平...

小编辑
2010/03/03
383
0

没有更多内容

加载失败,请刷新页面

加载更多

负载均衡的解决方案有哪些

负载均衡器服务可满足大型组织的需求,支持所有数据中心和跨数据中心高可靠性场景。 本地负载均衡,通过附带或者未附带持久性覆盖选项,Incapsula支持各种负载均衡算法,以优化服务器之间的流...

上树的熊
47分钟前
4
0
Java实现在线打开word文档加盖印章/盖章/签名功能

前言: 我们知道,大型一点的OA办公系统都会有很多在线处理office办公文档的需求。其中有一点也基本绕不开,那就是为文档盖章或添加手写签名来保护文档,让被盖章的文档不再被编辑。 在Java中...

山里的红杏
54分钟前
5
0
js控制输入正负数,小数点后保留两位

//限制数字function clearNoNum(obj){ //修复第一个字符是小数点 的情况. if(obj.value !=''&& obj.value.substr(0,1) == '.'){ obj.value=""; } obj.value ...

一直在成长的程序猿
57分钟前
3
0
动态代理

具体场景 为了使代理类与被代理类对第三方有相同的函数,代理类与被代理类一般实现一个公共的interface,定义如下 public interface Subject { void rent(); void hello(String s)...

wuyiyi
今天
2
0
时间字段

我们看看这几个数据库中(mysql、oracle和sqlserver)如何表示时间 mysql数据库:它们分别是 date、datetime、time、timestamp和year。date :“yyyy-mm-dd”格式表示的日期值 time :“hh:...

DemonsI
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部