gpt4 book ai didi

c++ - 为什么基于不存在的 FontFamily 创建字体有效?

转载 作者:可可西里 更新时间:2023-11-01 10:27:54 25 4
gpt4 key购买 nike

我正在使用 Gdi+ 绘制一些文本,我正在尝试确保我创建的字体确实存在。我注意到无论我指定什么字体,它都能正常工作。我有以下代码:

Font font(TEXT("SomeGibberishFOEIHSFUE"), 12, 0, UnitPoint);

if (!font.IsAvailable())
exit(0);

// draw text

我的系统上没有安装名为 SomeGibberishFOEIHSFUE 的字体,但是 IsAvailable 返回 TRUE 并且程序运行并使用字体绘制文本看起来像 Arial 而不是退出。这是为什么?

如果我使用的 IsAvailable 错误,我应该使用什么函数来判断 Font 的创建是否成功?我还尝试了返回 OkGetLastStatus

最佳答案

这就是 Windows 字体映射器在工作,如果它不能提供所请求的字体,它总会找到替代字体。如有必要,回退到默认的 GUI 字体。您可以改用 FontFamily 类。当您使用其构造函数并传递不存在的字体时,它的 .NET 版本(看起来您正在使用它)将抛出 ArgumentException。它的原生 GDI+ 版本有一个 IsAvailable() method .是的,有点古怪的行为,但这在 GDI+ 中并不罕见。

关于c++ - 为什么基于不存在的 FontFamily 创建字体有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com