【问题标题】:Fit Label size to drawn text使标签大小适合绘制的文本
【发布时间】:2013-07-24 08:54:32
【问题描述】:

我正在使用标签向用户显示进度。这会发生很多次,并且部分用户定义的文本每次都会更改。

问题:我应该知道绘制的文本是否大于标签的大小。

我试过这种方法:

using (Graphics g = lbl.CreateGraphics()) {
    SizeF size = g.MeasureString(lbl.Text, lbl.Font);
    // Change size of label if too small
}

但它太慢了,每次更新调用时都会占用大量资源。

那么有没有办法找出绘制的文本何时大于Label?

编辑:
正如 Hans Passant 所说,AutoSize 会做到的。
抱歉,我没有说 Label 下面的其他控件必须移动。

【问题讨论】:

  • 您正在尝试调整标签大小? stackoverflow.com/questions/9527721/…
  • @butterbox:谢谢,但您的链接问题是关于调整字体大小。我想调整标签的大小。
  • 它已经知道如何做到这一点,请将其 AutoSize 属性设置为 True。如果那是“慢”,那么你做错了,这只需要对人眼来说足够快。比 MeasureString() 慢 方式。只需限制您的更新速度。
  • @HansPassant:请看我的编辑...
  • 然后您应该将表单布局为将所有内容放在TableLayoutPanel 或类似名称中。这将负责随着相对大小的变化重新调整位置。

标签: c# winforms graphics


【解决方案1】:

好像没有别的办法了。
所以我必须使用上面的解决方案:

using (Graphics g = lbl.CreateGraphics()) {
    SizeF size = g.MeasureString(lbl.Text, lbl.Font);
    // Change size of label if too small
}

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 2021-04-14
    • 2012-02-06
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多