如何使用 c# 在 windows 8 metro/store 应用程序中使用可用字体列表填充组合框?
How to fill combobox with list of available fonts in windows 8 metro/store app using c#?
我正在 Visual Studio 2013 中为 Windows 8(通用应用程序)构建一个简单的应用程序,我想使用组合框的选定字体更改文本框的字体系列。
我知道如何在 windows 表单应用程序中使用可用字体填充组合框,例如:
List<string> fonts = new List<string>();
foreach (FontFamily font in System.Drawing.FontFamily.Families)
{
fonts.Add(font.Name);
}
但这在 metro/store 应用程序中不起作用...请帮帮我
您需要使用 DirectX DirectWrite 来获取字体名称。这是一个代码示例:
using SharpDX.DirectWrite;
using System.Collections.Generic;
using System.Linq;
namespace WebberCross.Helpers
{
public class FontHelper
{
public static IEnumerable<string> GetFontNames()
{
var fonts = new List<string>();
// DirectWrite factory
var factory = new Factory();
// Get font collections
var fc = factory.GetSystemFontCollection(false);
for (int i = 0; i < fc.FontFamilyCount; i++)
{
// Get font family and add first name
var ff = fc.GetFontFamily(i);
var name = ff.FamilyNames.GetString(0);
fonts.Add(name);
}
// Always dispose DirectX objects
factory.Dispose();
return fonts.OrderBy(f => f);
}
}
}
代码使用 SharpDX 库。
我正在 Visual Studio 2013 中为 Windows 8(通用应用程序)构建一个简单的应用程序,我想使用组合框的选定字体更改文本框的字体系列。
我知道如何在 windows 表单应用程序中使用可用字体填充组合框,例如:
List<string> fonts = new List<string>();
foreach (FontFamily font in System.Drawing.FontFamily.Families)
{
fonts.Add(font.Name);
}
但这在 metro/store 应用程序中不起作用...请帮帮我
您需要使用 DirectX DirectWrite 来获取字体名称。这是一个代码示例:
using SharpDX.DirectWrite;
using System.Collections.Generic;
using System.Linq;
namespace WebberCross.Helpers
{
public class FontHelper
{
public static IEnumerable<string> GetFontNames()
{
var fonts = new List<string>();
// DirectWrite factory
var factory = new Factory();
// Get font collections
var fc = factory.GetSystemFontCollection(false);
for (int i = 0; i < fc.FontFamilyCount; i++)
{
// Get font family and add first name
var ff = fc.GetFontFamily(i);
var name = ff.FamilyNames.GetString(0);
fonts.Add(name);
}
// Always dispose DirectX objects
factory.Dispose();
return fonts.OrderBy(f => f);
}
}
}
代码使用 SharpDX 库。