2010-12-16 1 views
0

добавил шрифт TrueType к моим ресурсам проекта («MyFontResource»), и я установил действие сборки в «Ресурс». Мое намерение заключается в замене шрифта на объект Label этим ресурсом.Windows Forms: не удается правильно отобразить ресурс шрифта

Вот мой код:

PrivateFontCollection myFonts = new PrivateFontCollection(); 
unsafe { 
    fixed (byte* fontBytes = Properties.Resources.MyFontResource) 
     myFonts.AddMemoryFont((IntPtr)fontBytes, Properties.Resources.MyFontResource.Length); 
} 
myLabel.Font = new Font(myFonts.Families[0], 10f); 

шрифт показывает, как ожидается, только когда установлен шрифт локально. Если я не установил шрифт, я вижу шрифт, первоначально назначенный myLabel в моем проекте C#.

Теперь что?

ответ

3

Ничего, нашёл причину, по которой это не работает here.

Вот решение, которое работает (исходный код here):

class MyClass { 
    [DllImport("gdi32.dll")] 
    private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts); 

    public MyClass() { 
     uint installCount = 1; 
     PrivateFontCollection myFonts = new PrivateFontCollection(); 
     unsafe { 
      fixed (byte* pFontData = Properties.Resources.MyFont) { 
       myFonts.AddMemoryFont((IntPtr)pFontData, Properties.Resources.MyFont.Length); 
       AddFontMemResourceEx((IntPtr)pFontData, (uint)Properties.Resources.MyFont.Length, IntPtr.Zero, ref installCount); 
      } 
     } 
     myLabel.Font = new Font(myFonts.Families[0], 20f); 
    } 
} 
+0

кажется знакомым. – 2010-12-16 21:37:07

 Смежные вопросы

  • Нет связанных вопросов^_^