使用 DrawText 时,TextFormatFlags.Internal(又名 DT_INTERNAL)做什么?
使用 TextRenderer.DrawText() 时,设置 TextFormatFlags.Internal 标志实际上有什么作用?
同样,为 Win32 的 DrawTextEx() 函数设置 DT_INTERNAL 标志有什么作用?
更重要的是,我什么时候应该设置该标志,什么时候不应该设置它?
该文档说:“使用系统字体来计算文本指标”,但我不完全确定这意味着什么。我做了一些有限的测试,设置标志似乎改变了使用小字体大小时字体的渲染方式,但在使用大字体大小时似乎没有什么区别。
When using TextRenderer.DrawText(), what does setting the TextFormatFlags.Internal flag actually do?
Equivalently, what does setting the DT_INTERNAL flag to Win32's DrawTextEx() function do?
More to the point, when should I set that flag and when should I not set it?
The documentation says: "Uses the system font to calculate text metrics", but I'm not entirely sure what that means. I've done some limited testing and setting the flag seems to change how the font is rendered when using a small font size, but doesn't seem to make a difference when using a large font size.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这意味着无论您实际使用什么字体,它都会像您使用系统字体一样进行计算。例如,假设您的系统字体为 12 磅。如果您使用 30 点字体和 DT_INTERNAL 标志,则每行只会比(12 点)系统字体提前足够多,而不是 30 点字体,因此每行文本都会与前一行重叠。
“INTERNAL”基本上意味着“仅供 Windows 内部使用”——我相当确定我从未在任何实际代码中使用过此标志。
It means that regardless of what font you actually use, it does its calculations as if you were using the system font instead. For example, let's assume your system font it 12 points. If you're using a 30 point font along with the DT_INTERNAL flag, each line will only be advanced enough for the (12-point) system font, not your 30-point font, so each line of text will overlap with the previous.
The "INTERNAL" basically means "for Windows' internal use only" -- I'm reasonably certain I've never used this flag in any real code.