public class CustomFont
{
public string ChangeFont(string font, string target)
{
PrivateFontCollection pfc = new PrivateFontCollection();
int fontLength = Properties.Resources.font.Length;
byte[] fontdata = Properties.Resources.font;
System.IntPtr data = Marshal.AllocCoTaskMem(fontLength);
Marshal.Copy(fontdata, 0, data, fontLength);
pfc.AddMemoryFont(data, fontLength);
target.Font = new Font(pfc.Families[0], target.Font.Size);
}
}
I tried this but errors were shown that 'App.Properties.Resources' does not contain a definition for 'font'.
大丈夫ですので、皆さんの回答に従ってコードを編集しました。現在はほとんど動作しています。問題は、どの方法をbyte[]
のために使うべきですか?このコードをメソッドとしてラップするにはどうすればよいですか?
public void ChangeFont(string font, TextBox target)
{
PrivateFontCollection pfc = new PrivateFontCollection();
int fontLength = Properties.Resources.ResourceManager.GetString(font).Length;
byte[] fontdata = Properties.Resources.font;
System.IntPtr data = Marshal.AllocCoTaskMem(fontLength);
Marshal.Copy(fontdata, 0, data, fontLength);
pfc.AddMemoryFont(data, fontLength);
target.Font = new Font(pfc.Families[0], target.Font.Size);
}
もしエラーがそうだとしたら、私はリソースにフォントのエントリがないと思います。リソースファイルを表示できますか? –
プロジェクトのプロパティウィンドウを表示し、[リソース]セクションを選択します。リソースがないと表示された場合は、リソースを追加して必要な設定を追加する必要があります。 – Wheels73
このコードにはさらに問題があります。 targetはstring型で、私が知っている文字列型はFontプロパティを持たない。メソッドのシグネチャでは必要であるとは言っても、結果は返されませんでした。 –