按名称访问PrivateFontCollection系列

时间:2015-11-28 15:03:14

标签: c# fonts

我有一个使用自定义字体绘制文本的功能,其中有一些。我需要将一个字符串名称传递给该函数,并使用与该名称匹配的Family进行绘制。而且我不想盲目地遍历集合并手动查找给定的名称。是否可能,或者迭代是唯一的方法?

    System.Drawing.Text.PrivateFontCollection CustomFonts = new System.Drawing.Text.PrivateFontCollection();
    // [...]
    void LoadCustomFont(Stream font)
    {
        byte[] fontdata = new byte[font.Length];
        font.Read(fontdata, 0, (int)font.Length);
        font.Close();
        unsafe
        {
            fixed (byte* pFontData = fontdata)
            {
                CustomFonts.AddMemoryFont((System.IntPtr)pFontData, fontdata.Length);
            }
        }
    }
    using (var font0 = typeof(Program).Assembly.GetManifestResourceStream("font0.ttf"))
            LoadCustomFont(font0);
    using (var font1 = typeof(Program).Assembly.GetManifestResourceStream("font1.ttf"))
            LoadCustomFont(font1);
    // [...]
    // here, is Families[i] the only possible approach?
    var font = new Font(CustomFonts.Families[0], 8, FontStyle.Regular, GraphicsUnit.Pixel);

0 个答案:

没有答案