2010-12-16 13 views
0

は、プロジェクトリソース( "MyFontResource")にTrueTypeフォントを追加しました。ビルドアクションを "リソース"に設定しました。私の意図は、Labelオブジェクトのフォントをこのリソースで置き換えることです。ここでWindowsフォーム:フォントリソースを正しく表示できません

は私のコードです:

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); 

フォントが表示され、私は、ローカルにフォントをインストールしている場合にのみ、予想通り。フォントをインストールしていない場合は、もともとC#プロジェクトでmyLabelに割り当てられていたフォントが表示されます。

今何ですか?

答えて

3

これはうまくいかない理由が見つからない場合は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

はおなじみのルックス:

はここで機能するソリューション(元のコードhere)です。 –

+0

ありがとうございます、あなたのコードはVBを覚えていないから私を救った。 –

関連する問題