アプリケーションの特定のボタンに特定のフォントを表示したいので、それをリソースとしてプロジェクトに含めることにしました。
次に、Marshal 名前空間を使用して .addMemoryFont を新しい PrivateFontCollection に追加し、フォントを新しいフォント ファミリに設定します。
これは、Windows Vista、Windows7、および Windows 8 (プレビュー) では機能しますが、アプリがサポートする必要がある Windows XP では機能しません。
XPにはエラーはありません..フォントが表示されないだけです。
また、フォントをファイルとして埋め込み、ストリームオブジェクトを介してロードしようとしました - Assembly.GetExecutingAssembly().GetManifestResourceStream(resource)
これもXP以外のすべてで機能しますが、何か考えはありますか? ありがとう
リソースをロードする関数は次のとおりです。 このテストでは、AVP と呼ばれるリソースとして AVP.TTF (広く利用可能、非商用) を追加しました。
クライアントで button.Font = LoadFontResource(9.75, FontStyle.Regular) を使用します。
Public Function LoadFontResource(ByVal Size As Single, ByVal style As FontStyle) As Font
_fontsResource = New PrivateFontCollection
Dim fontMemPointer As IntPtr = Marshal.AllocCoTaskMem(My.Resources.AVP.Length)
Marshal.Copy(My.Resources.AVP, 0, fontMemPointer, My.Resources.AVP.Length)
_fontsResource.AddMemoryFont(fontMemPointer, My.Resources.AVP.Length)
Marshal.FreeCoTaskMem(fontMemPointer)
Return New Font(_fontsResource.Families(0), Size, style)
End Function