Какой самый простой способ вычислить внутренний прямоугольник отображения элементов управления (с вычтенным отступом)? - PullRequest
2 голосов
/ 02 ноября 2011

Элемент управления отображает свой прямоугольник отображения в .DisplayRectangle - какой самый простой способ найти область, доступную для элемента управления, если задано .Padding?

Например, Label имеет .DisplayRectangle, всегда равное .ClientRectangle, даже если .Padding не равно (0,0,0,0). Я хочу получить размер прямоугольника в .ClientRectangle после того, как обратил внимание на настройку .Padding (и любые дополнительные свойства могут ограничить «чистую» область отображения, в этом отношении).

Нет ли какого-либо метода или другого поддерживаемого фреймворком способа сделать это? Должен ли я перекодировать все вычисления прямоугольника, которые, вероятно, уже находятся в коде платформы?

1 Ответ

3 голосов
/ 04 ноября 2011

Padding - это не просто прямая модификация 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));
}
...