c#中重用或处理自定义字体的有效方法

本文关键字:字体 有效 方法 自定义 处理 | 更新日期: 2023-09-27 18:09:07

我们有一个c#表单应用程序,它使用了很多控件和自定义字体,每个控件都有不同的大小。问题是,每当重新创建控件时,不断增长的FONT gdi对象计数都会导致OutOfMemory异常(一旦超过10,000个计数-使用Bear gdi进行测试)。我尝试了以下选项,但字体gdi不保持一致:

  1. 通过在静态类中将每种字体声明为静态变量来重用特定字体类型/大小的每种字体

    static Font Robo_13Reg_Font= new Font("Roboto", 13F, System.Drawing.FontStyle。定期,System.Drawing.GraphicsUnit。像素,((字节)(0)));

  2. 创建一个本地字体变量并在使用完成后处理

  3. 从标签中重用字体到所需的控件并处置标签,如下面的代码

 public static void getRobo_13Reg_Font(Control addFontTo)
    {
        try
        {
            if (Robo_13Reg_Font == null)
            {
                Robo_13Reg_Font = new Label();
                Robo_13Reg_Font.Font = new Font("Roboto", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel, ((byte)(0)));
            }
            addFontTo.Font = Robo_13Reg_Font.Font;
            Robo_13Reg_Font.Dispose();
            Robo_13Reg_Font = null;
        }
        finally
        {
        }
    }

感谢所有的输入!

c#中重用或处理自定义字体的有效方法

检查你是否正在创建大量的工具提示实例(新工具提示)并为你的应用程序中的工具提示分配字体-这也会为每个正在创建的工具提示实例创建字体GDI对象,因为我有类似的问题。