Вы уверены, что ffmpeg нужен путь шрифта, а не его имя?В большинстве случаев компоненты и библиотеки используют имя шрифта или его объекта и работают с ним.
, если компоненту требуется имя шрифта или объект шрифта, это так просто, как что-то вроде:
DrawText('Sample Text, fontDialog1.Font);
, но если вам действительно нужно получить путь к выбранному шрифту в FontDialog:
private List<string> GetFilesForFont(string fontName)
{
var fontNameToFiles = new Dictionary<string, List<string>>();
foreach (var fontFile in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Fonts)))
{
var fc = new PrivateFontCollection();
if (File.Exists(fontFile))
fc.AddFontFile(fontFile);
if ((!fc.Families.Any()))
continue;
var name = fc.Families[0].Name;
// If you care about bold, italic, etc, you can filter here.
if (! fontNameToFiles.TryGetValue(name, out var files))
{
files = new List<string>();
fontNameToFiles[name] = files;
}
files.Add(fontFile);
}
if (!fontNameToFiles.TryGetValue(fontName, out var result))
return null;
return result;
}
и использовать его следующим образом:
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
string fontName = fontDialog1.Font.Name;
var fontFiles = GetFilesForFont(fontName);
}