如何确定给定字体的字符串的大小
我有一个小表单,显示一些进度信息。
我很少需要显示相当长的消息,并且我希望能够在需要时调整此表单的大小,以便此消息适合表单。
那么我如何知道在字体 F
中渲染的字符串 S
有多宽呢?
I have a small form that displays some progress information.
Very rarely I have to show a rather long message and I want to be able to resize this form when needed so that this message fits in the form.
So how do I find out how wide string S
will be rendered in font F
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这取决于所使用的渲染引擎。 您基本上可以在 GDI 和 GDI+ 之间切换。 可以通过设置
UseCompatibleTextRendering 来完成切换
相应属性当使用 GDI+ 时,您应该使用
MeasureString
:当使用 GDI(即本机 Win32 渲染)时,您应该使用
TextRenderer
类:请参阅本文:文本渲染:在 Windows 窗体控件中使用复杂脚本构建全球可用的应用程序< /a>
It depends on the rendering engine being used. You can basically switch between GDI and GDI+. Switching can be done by setting the
UseCompatibleTextRendering
property accordinglyWhen using GDI+ you should use
MeasureString
:When using GDI (i.e. the native Win32 rendering) you should use the
TextRenderer
class:See this article: Text Rendering: Build World-Ready Apps Using Complex Scripts In Windows Forms Controls
怎么样:(
这里是MSDN链接.)
How about this:
(Here is the MSDN link.)
对于这个答案,我使用了一个辅助函数:
所以基本上该方法使用尺寸为 (1,1) 的 fakeimage 来计算字符串的长度,在本例中是根据您选择的文本创建的图像的宽度。
如何使用它的示例如下所示:
For this answer I use a helper function:
So basically the method uses a fakeimage with dimensions (1,1) to compute the length of the string, in this case the width of the image created from your chosen text.
An example of how to use it ends up like this:
回到 Win32,我为此使用了 VisualStyleRenderer::GetTextExtent 函数的等效函数。
Back in the Win32 I was using the equivalent for VisualStyleRenderer::GetTextExtent function for this.