簡體   English   中英

在WINRT中使用C#加載可用字體的列表

[英]Loading list of available fonts using c# in WINRT

我想使用c#將可用字體列表加載到winrt應用程序的組合框中。 .Net中的任務很簡單,但是我在winrt中找不到相應的API。 我該怎么做?

您需要使用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;
        }
    }
}

沒有SharpDX,還有一種枚舉字體的方法。 https://code.msdn.microsoft.com/FontExplorer-lets-you-f01d415e#content

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM