饭打馒头吖 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 关于#网络安全#的问题:求ensp的网络安全,不要步骤要完成版文件
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥20 使用Photon PUN2解决游戏得分同步的问题
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM