C#将FontDialog设置为仅显示TrueType字体
几乎每个论坛都会提出这个问题,包括这里,但我找不到任何可接受的答案。 我开始认为实际上没有解决方案,我只需要将我的代码包装在try / catch块中并向用户道歉并要求他们选择另一种字体。
我想显示一个FontDialog
以便用户可以更改Chart
上的字体,但是如果用户选择非TrueType字体,则会抛出exception。 GDI +只能处理TrueType字体。
如何过滤不能与GDI +一起使用的FontDialog中的字体?
FontDialog类已经执行此操作,它使用带有CF_TTONLY选项的ChooseFont()API调用。 这迫使对话框仅显示将自己宣传为TrueType字体的字体。 这些链接表明这个对话框周围有字体,直到今天才从未听说过。 这使它非常罕见,但肯定不是意料之外,有很多垃圾字体与坏元数据。
没有任何东西可以捕获exception,它是在回调函数中引发的,该函数已经被嵌入到.NET框架中。 重写课程是一种选择,但不是一个令人愉快的选择。 卸载troublemaker字体无疑是一个简单的解决方案。
除了尝试/ catch阻止它之外,没有真正好的方法
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.AllowSimulations设置为false 。
您可以使用此处提供的自定义FontDialog来克服此exception。 它是用C#.Net开发的。
上述就是C#学习教程:C#将FontDialog设置为仅显示TrueType字体分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998578.html