Как рассчитать размер масштабного преобразования примененного элемента управления
Как рассчитать увеличенную ширину и высоту масштабного преобразования примененного элемента управления в 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 является вычисленным значением, вы должны знать, что в него могут быть внесены множественные или инкрементные изменения в результате различных операций системы макетов. Система макета может вычислять требуемое пространство измерения для дочерних элементов, ограничения родительским элементом и так далее.