Winform窗体更换字体


Font font = new Font(fontName, 控件名称.Font.Size);
控件名称.Font = font;

//下面是将原始字体缓存

//首先将原始的字体对象序列化并缓存到内存中,使用CacheFont方法。然后,通过调用GetCachedFont方法,从缓存中获取字体对象。最后,使用获取到的字体对象创建新的字体。

// 将字体对象序列化并缓存
Font originalFont = new Font("Arial", 12);
FontCache.CacheFont(originalFont, "customFont");

// 从缓存中获取字体对象
Font cachedFont = FontCache.GetCachedFont("customFont");

// 使用缓存中的字体对象创建新的字体(根据自己需要传入参数)
Font newFont = new Font(cachedFont.FontFamily, 18, FontStyle.Bold);

 

//在WinForms中,可以使用以下代码将字体对象序列化并缓存起来,然后使用缓存中的字体对象创建新的字体:

private static Dictionary<string, byte[]> _fontCache = new Dictionary<string, byte[]>();

public static void CacheFont(Font font, string cacheKey)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, font);
_fontCache[cacheKey] = ms.ToArray();
}
}

public static Font GetCachedFont(string cacheKey)
{
if (_fontCache.ContainsKey(cacheKey))
{
byte[] fontData = _fontCache[cacheKey];
using (MemoryStream ms = new MemoryStream(fontData))
{
BinaryFormatter bf = new BinaryFormatter();
Font font = (Font)bf.Deserialize(ms);
return font;
}
}
return null;
}

posted @ 2023-10-24 18:03  二零一七  阅读(283)  评论(0编辑  收藏  举报