我必须将通过FontDialog选择的字体的路径分配给字符串变量。
我如何完成此任务?
string fontTextPath = fontDialog.Font // and then?
或者还有其他方法吗?
答案 0 :(得分:0)
假设您使用的是OpenFileDialog,因为提供的代码使用的是名为fontDialog的对象...
using (OpenFileDialog fontDialog = new OpenFileDialog())
{
DialogResult result = fontDialog.ShowDialog();
if (result == DialogResult.OK)
{
string file = fontDialog.FileName;
}
}
答案 1 :(得分:0)
您确定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);
}