C#设置fontdialog仅显示truetype字体
-
25-10-2019 - |
题
在几乎每个论坛中都提出了这个问题,包括 这里 但是我可以找到任何可以接受的答案。我开始认为实际上没有解决方案,我只需要将代码包装在尝试/捕获块中,并向用户道歉,并要求他们选择其他字体。
我想展示 FontDialog
因此用户可以更改一个字体 Chart
, 但是,如果用户选择非truetype字体,则会引发异常。 GDI+只能处理truetype字体。
如何从无法与GDI+一起使用的Fontdialog过滤字体?
解决方案
Fontdialog类已经做到这一点,它将使用CF_TTONLY选项使用peacteFont()API调用。这迫使对话框仅显示将自己宣传为trueType字体的字体。这些链接表明,周围有字体,愚弄了对话,直到今天之前才听说过。这使它非常罕见,但肯定不是出乎意料的,周围有很多垃圾字体。
您无能为力来捕获异常,它是在烤入.NET框架中的回调功能中提出的。重写课程是一种选择,但不是一个令人愉快的选择。卸载麻烦制造商的字体无疑是简单的解决方案。
其他提示
除了尝试/抓住它,没有真正的好方法
try
{
if (m_FontDialog.ShowDialog(frmMain.mainForm) == DialogResult.OK)
{
//Successful
}
}
catch (Exception ex)
{
//Not a truetype font
MessageBox.Show(frmMain.mainForm, ex.Message + Environment.NewLine + "Font not changed.", "Font Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
我不确定它是否会起作用,但请尝试设置 fontdialog 至 错误的.
您可以使用可用的自定义fontdialog 这里 克服这个例外。它是在c#.net中开发的。
不隶属于 StackOverflow