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);
}
答案 0 :(得分:0)
您正在尝试按名称从资源中获取字符串。
你不能像
那样写Properties.Resources.font;
您必须使用ResourceManager
string myString = Properties.Resources.ResourceManager.GetString(font);
然后你可以用那个字符串做任何你想做的事。
但是你的方法还有很多其他原因,你会遇到以下问题;例如没有返回值。