WPF字形控制字体uri!(它很慢,并保留在内存中)

本文关键字:保留 内存 字体 控制 字形 uri WPF | 更新日期: 2023-09-27 18:03:59

我正在制作一个具有许多行和列的数据网格控件。问题是加载时间,使用字形代替文本块解决了这个问题。

现在的问题是,当我从应用程序包中给它一个字体时,它变慢了,留在内存中,每次控件重新加载时,它变得更慢,消耗更多的内存:

        Glyphs glyph = new Glyphs()
        {
                FlowDirection = FlowDirection.LeftToRight,
                UnicodeString = "text",
                FontUri = fnt,
                FontRenderingEmSize = 15,
                Fill = Brushes.Black,
                HorizontalAlignment = HorizontalAlignment.Center
        };

现在的问题是:

 Uri fnt = new Uri("pack://application:,,,/myapp;component/Fonts/times.ttf");

一切正常,如果我这样做:

 Uri fnt = new Uri(@"C:'Windows'Fonts'times.ttf");

但是我要使用一种其他系统上不存在的字体它需要在我的应用程序中

WPF字形控制字体uri!(它很慢,并保留在内存中)

这实际上是与这里https://stackoverflow.com/a/31452979相同的问题,它不会很快被修复,因为以下答案是在2013.10.01:

WPF团队最近审查了这个问题,但不会解决这个问题,因为此时团队正在关注影响WPF开发人员最多的错误。如果您认为此错误已被错误地解决,请重新激活此错误并提供任何必要的支持细节。

感谢您的反馈。但是,这个问题将不会在WPF的下一个版本中得到解决。谢谢你!wpf团队。

由于这两种情况都是由UnmanagedMemoryStreams引起的,现在你只能创建临时文件夹并将字体保存到其中。它并不漂亮,但却是我们所有的一切。