C# - 字体(来自参考资料)"名称"在当前上下文中不存在

时间:2017-03-21 22:34:13

标签: c# memory-leaks fonts access-violation font-family

所以,没有人感到困惑,设置基本上是主要的解决方案,然后是第二个带有自定义控件的解决方案。第一张图片来自主要解决方案,它显示了我在运行时获得的错误。我使用GetFontFromBytes来使用项目资源中隐藏的字体文件。第二张图片来自第二个解决方案。我想要做的是让我的一个控件产生许多其他控件作为孩子 enter image description here enter image description here 下面是我为访问我的字体而编写的代码。

private Font GetFontFromBytes(byte[] bytes, float size)
{
    PrivateFontCollection pfc = new PrivateFontCollection();
    IntPtr ptr = Marshal.AllocCoTaskMem(bytes.Length);
    Marshal.Copy(bytes, 0, ptr, bytes.Length);
    pfc.AddMemoryFont(ptr, bytes.Length);
    Marshal.FreeCoTaskMem(ptr);
    return new Font(pfc.Families[0], size);
}

感谢任何和所有帮助。如果需要更多信息,请告诉我您的需求。

修改 为了测试和方便,我已经从通过内存加载字体转移到本地文件。但是,出乎意料的是,我现在遇到加载第一个字体的问题,之后没有字体会加载,因为第一个字体没有加载(错误:CS0103"名称'名称&# 39;当前上下文中不存在")。如果除PrivateFontCollection之外还有其他方法可以使用自定义字体,请告诉我,否则我需要对我的问题进行某种修复。

EDIT2 还应该注意的是,我的代码已被调整为只有自由分配的内存并在表单关闭时处理(可怕的)PFC。

0 个答案:

没有答案