饭打馒头吖 2022-03-29 10:31 采纳率: 40%
浏览 57
已结题

C#winform窗体工程中引用资源中的字体时CS1729报错

窗口要用一些奇奇怪怪的字体,我把一个自己下的字体嵌入资源,最开始用缓存的方式在program里乱改一通

using System;
using System.Drawing.Text;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Reflection;
using System.IO;

namespace WindowsFormsApplication1
{
    internal static class Program
    {
        public static PrivateFontCollection privateFontCollection = new PrivateFontCollection();
        [STAThread]
        private static void Main()
        {
            string fontName = "WindowsFormsApplication1.Resources.颖颖情书体_ttf";

            Assembly assembly = Assembly.GetExecutingAssembly();
            Stream stream = assembly.GetManifestResourceStream(fontName);

            byte[] fontData = new byte[stream.Length];

            stream.Read(fontData, 0, (int)stream.Length);
            stream.Close();

            unsafe
            {

                fixed (byte* pFontData = fontData)
                {
                    privateFontCollection.AddMemoryFont((System.IntPtr)pFontData, fontData.Length);
                }
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(defaultValue: false);
            Application.Run( new Form1());
        }
    }
}

然后在form1.designer里输入

this.label1.Font = new System.Drawing.Font(Program.privateFontCollection.Families[0], 20.25F);

它告诉我索引超出了数组界限,而且我搬到别的电脑上试运行是字体变回默认了。于是我把program改了回去,把刚才那个改成

this.label1.Font = new System.Drawing.Font(((byte[])(resources.GetObject("颖颖情书体.ttf")), 20.25F));

就报错了,来回折腾好几天了,几大网站的文章差不多都看了两遍以上,可这是为什么,我又该怎么办?

  • 写回答

3条回答 默认 最新

  • 於黾 2022-03-29 11:19
    关注

    PrivateFontCollectionpfc = new PrivateFontCollection();
    pfc.AddFontFile(path);
    就行了
    你已经把文件放到了资源里,那么直接
    pfc.AddFontFile(WindowsFormsApplication1.Resources.颖颖情书体_ttf);不就行了
    先放字符串里再反射不够你折腾的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月29日

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表