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



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

例如,一个Label.DisplayRectangle总是等于.ClientRectangle,即使.Padding不是(0,0,0,0)。在注意.Padding设置(以及任何可能限制"净"显示区域的附加属性)之后,我想获得.ClientRectangle中的矩形的大小。

是否有一些方法,或其他框架支持的方式来做到这一点?我是否需要重新编码那些可能已经在框架代码中的矩形计算?

Padding不是对Display Rectangle的简单修改。有些内置控件考虑到了这一点,有些则没有。

最好是阅读关于填充的文档,看看哪些部分适合你。

希望正确的简单答案是"不,没有框架方法。"在

下面创建你自己的like
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));
}

最新更新