国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

C#字體池技術實現代碼詳解

2024-07-09 22:41:51
字體:
來源:轉載
供稿:網友

字體池的應用,主要是為了解決字體不斷創建導致句柄泄漏/內存泄漏的問題,這個問題在Android上也同樣存在。

經測試,C# WinForm原生控件不存在字體問題,但是使用的第三方控件Dev 14.1就存在這樣的問題。

所以參照線程池思路,想到了使用字體池的方式,使系統中的字體統一為一個對象,經測試,有效解決了泄漏問題。

字體池代碼:

/// <summary>/// 字體緩存類/// </summary>public static class FontStatic{  /// <summary>  /// 緩存數組  /// </summary>  private static Dictionary<string, Font> sFonts = new Dictionary<string, Font>();   /// <summary>  /// 根據字體獲取一個緩存的字體對象  /// </summary>  /// <param name="font">字體</param>  /// <returns>已緩存字體</returns>  public static Font GetFont(Font font)  {    string key = string.Format("{0}-{1}-{2}-{3}", font.Name, font.Size, font.Italic, font.Bold);    if (!sFonts.ContainsKey(key))    {      sFonts.Add(key, font);    }     return sFonts[key];  }}

這里關鍵點在于判斷需要創建的字體是否已存在緩存字典中,經過探索,不能使用Equals等方法,只能折中采用幾個關鍵屬性組合判斷的方式

以上就是本次介紹的全部相關知識點,希望武林網之家整理的內容能夠幫助到大家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旌德县| 泗洪县| 永城市| 新田县| 芒康县| 拜城县| 平泉县| 绥滨县| 唐山市| 繁峙县| 闽侯县| 仪陇县| 仙桃市| 大邑县| 乐东| 敦化市| 方正县| 广丰县| 阳信县| 钟山县| 汝阳县| 攀枝花市| 田东县| 千阳县| 岑溪市| 前郭尔| 含山县| 武功县| 集安市| 龙泉市| 郓城县| 宝应县| 元江| 宾阳县| 曲水县| 肇庆市| 邮箱| 启东市| 汨罗市| 申扎县| 马尔康县|