Member 11521249 Ответов: 0

В моем коде privatefontcollection не может утилизировать объект


Привет ,
при загрузке внешнего шрифта с помощью языка c# появляется следующая ошибка
Цитата:
ошибки:- система.Во время выполнения.InteropServices.SEHException: внешний компонент создал исключение
Ниже приведен мой код
private float MeasureString(string fontName, float fontSize, string text)
        {
            const float offSet = -20f;

            var fontFamily = GetFontFamily(fontName);
            var font = new Font(fontFamily, fontSize, FontStyle.Regular, GraphicsUnit.Millimeter);
            var bitmap = new Bitmap(1, 1);
            bitmap.SetResolution(96.0f, 96.0f);
            using(var graphic = Graphics.FromImage(bitmap))
            {
                graphic.PageUnit = GraphicsUnit.Millimeter;
                var size = graphic.MeasureString(text, font, new PointF(0, 0), new StringFormat(StringFormatFlags.FitBlackBox | StringFormatFlags.DirectionRightToLeft));
                return size.Width + offSet;
            }
            
        }
Загрузка функций
private FontFamily GetPrivateFontFamily(string fontName)
        {
            PrivateFontCollection privateFonts = new PrivateFontCollection();
            var directoryPath = _fontFamilySetting.Value.DirectoryPath;
            if (!string.IsNullOrEmpty(directoryPath) && Directory.Exists(directoryPath))
            {
                foreach (string file in Directory.EnumerateFiles(_fontFamilySetting.Value.DirectoryPath))
                {
                    privateFonts.AddFontFile(file);
                }
                return privateFonts.Families.First(f => f.Name == fontName);
            }
            return null;
        }
Может ли кто-нибудь, пожалуйста, помочь нам решить эту ошибку

Что я уже пробовал:

Да, я попробовал код. using(var graphic = Graphics.FromImage(bitmap)) оператор где с помощью оператора автоматически освобождается объект но это не происходит в моем коде

CHill60

Что заставляет вас думать, что объект не был удален - ошибка относится к исключению из внешнего компонента. Что говорит остальная часть исключения и в какой строке выбрасывается исключение?

0 Ответов