c# を使用して、使用可能なフォントのリストを winrt アプリのコンボボックスにロードしたいと考えています。.Net では簡単な作業でしたが、winrt で対応する API が見つかりませんでした。どうすればできますか?
質問する
953 次
2 に答える
4
DirectWrite を使用する必要があります。ここにそれを行うためのスニペットがあります:
https://github.com/christophwille/winrt-snippets/tree/master/EnumerateFonts
コピーペースト:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using SharpDX.DirectWrite;
namespace EnumerateFonts
{
public class InstalledFont
{
public string Name { get; set; }
// Code taken straight from SharpDX\Samples\DirectWrite\FontEnumeration\Program.cs
public static List<InstalledFont> GetFonts()
{
var fontList = new List<InstalledFont>();
var factory = new Factory();
var fontCollection = factory.GetSystemFontCollection(false);
var familyCount = fontCollection.FontFamilyCount;
for (int i = 0; i < familyCount; i++)
{
var fontFamily = fontCollection.GetFontFamily(i);
var familyNames = fontFamily.FamilyNames;
int index;
if (!familyNames.FindLocaleName(CultureInfo.CurrentCulture.Name, out index))
familyNames.FindLocaleName("en-us", out index);
string name = familyNames.GetString(index);
fontList.Add(new InstalledFont()
{
Name = name,
});
}
return fontList;
}
}
}
于 2013-01-18T18:10:39.797 に答える
0
SharpDX を使用せずにフォントを列挙する方法もあります。https://code.msdn.microsoft.com/FontExplorer-lets-you-f01d415e#content
于 2015-11-06T10:53:29.163 に答える