我正在使用
添加字体GCHandle pinnedArray = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr pointer = pinnedArray.AddrOfPinnedObject(); CustomFonts.Fonts.AddMemoryFont(pointer, data.Length); pinnedArray.Free();
但是当我将它用作标签时,它只会显示为一堆字母(运行时)。我打开了CompatibleTextRendering。我试图嵌入“访客”。当我使用它而不嵌入它,它工作正常。但我想嵌入它,因为它不是标准字体。
编辑:
刚尝试使用AddFile,这有效。不知道为什么从内存中添加它会失败。
答案 0 :(得分:2)
显然AddMemoryFont不会进行额外的api调用。
[DllImport("gdi32.dll")] private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts); GCHandle pinnedArray = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr pointer = pinnedArray.AddrOfPinnedObject(); CustomFonts.Fonts.AddMemoryFont(pointer, data.Length); uint dummy = 0; AddFontMemResourceEx((IntPtr)pointer, (uint)data.Length, IntPtr.Zero, ref dummy); pinnedArray.Free();