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

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

2 ответа

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;
}

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

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

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

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

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

Другие вопросы по тегам