计算控件内部显示矩形(减去填充)的最简单方法是什么?

时间:2011-11-02 10:05:33

标签: winforms label

控件在.DisplayRectangle中报告其显示矩形 - 如果设置了.Padding,找到控件可用区域的最简单方法是什么?

例如,Label .DisplayRectangle始终等于.ClientRectangle,即使.Padding不是(0,0,0,0)。我想在注意.ClientRectangle设置之后获取.Padding中矩形的大小(以及任何其他属性可能会限制“净”显示区域)。

是不是有一些方法或其他框架支持的方法呢?我是否必须重新编码可能已经在框架代码中的所有矩形计算?

1 个答案:

答案 0 :(得分:2)

填充不仅仅是对Display Rectangle的直接修改。一些内置控件会将其考虑在内,有些则没有。

最好是阅读Padding的文档,看看哪些部分适用于你。

希望目标简单的答案是“不,没有框架方法。如下所示建立自己的”

private Rectangle GetPaddedRectangle(Control control)
{
    var rect = control.ClientRectangle;
    var pad = control.Padding;
    return new Rectangle( rect.X + pad.Left, 
                          rect.Y + pad.Top, 
                          rect.Width - (pad.Left+pad.Right), 
                          rect.Height - (pad.Top+pad.Bottom));
}