Как рассчитать размер масштабного преобразования примененного элемента управления - PullRequest
0 голосов
/ 08 сентября 2011

Как рассчитать увеличение ширины и высоты примененного элемента управления масштабированием в WPF?

Ответы [ 2 ]

3 голосов
/ 14 июля 2014
public static Rect GetAbsolutePlacement(this FrameworkElement visual)
{
    Point topLeft = visual.PointToScreen(new Point(0, 0));
    var bottomRight = visual.PointToScreen(new Point(visual.ActualWidth, visual.ActualHeight));

    var bounds = Rect.Empty;
    bounds.Union(topLeft);
    bounds.Union(bottomRight);

    return bounds;
}
1 голос
/ 08 сентября 2011

Вы можете использовать свойства ActualHeight и ActualWidth. Они возвращают истинные значения элементов управления, а не запрошенные вами значения. Хотя это значение после , элемент управления был обработан.

Если вы хотите знать, какой будет высота и ширина , вы можете применить свое преобразование к размерам запроса, но они могут не соответствовать фактическим значениям.

MSDN содержит больше информации.

Существует разница между свойствами высоты и ширины, а также ActualHeight и ActualWidth. Например, свойство ActualHeight является вычисленным значением, основанным на других параметрах высоты и системе макетов. Значение устанавливается самой системой макета на основе фактического прохода рендеринга и поэтому может немного отставать от заданного значения свойств, таких как Высота, которые являются основой изменения ввода.

Поскольку ActualHeight является вычисленным значением, вы должны знать, что в него могут быть внесены множественные или инкрементные изменения в результате различных операций системы макетов. Система макета может вычислять требуемое пространство меры для дочерних элементов, ограничения родительского элемента и т. Д.

...