我们有C#表单应用程序,它使用了很多控件和每个都有不同大小的自定义字体。问题在于,每当重新创建控件时,不断增长的FONT gdi对象计数会导致OutOfMemory异常(一旦超过10,000计数 - 使用Bear GDI使用测试)。我曾尝试过以下选项,但字体gdi并不保持一致:
通过在静态类中将其声明为静态变量来重用特定字体类型/大小的每种字体
static Font Robo_13Reg_Font = new Font(" Roboto",13F,System.Drawing.FontStyle.Regular,System.Drawing.GraphicsUnit.Pixel,((byte)(0)));
创建本地字体变量并在使用完毕后进行处理
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
{
}
}
感谢您的所有投入!
答案 0 :(得分:1)
检查您是否正在创建多个ToolTip实例(新工具提示)并为应用中的工具提示指定字体 - 这也会为正在创建的每个工具提示实例创建字体GDI对象,因为我有类似的问题。