Получение истинного визуального ограничивающего прямоугольника элемента WPF?

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

Более сложная проблема - это вычисление визуальной ограничивающей рамки любого элемента каркаса. Под «визуальной ограничивающей рамкой» я подразумеваю, что самый верхний видимый пиксель в элементе структуры определяет верхнюю границу, самый правый видимый пиксель определяет правую границу и т. Д. Если вы сможете решить эту проблему, я буду еще более счастлив .

Я попытался поиграть с LayoutInformation.GetLayoutSlot (), но это не сработало должным образом. «Слот макета» на самом деле был НАМНОГО больше, чем фактические границы. Я также пробовал использовать VisualTreeHelper.GetDescendantBounds (), но из-за того, что VisualParent моей тестовой формы был защищен, мне не удалось получить доступ к этому свойству, и я решил проверить здесь, прежде чем углубляться в него.

Я надеюсь, что кто-нибудь сможет предоставить простой способ получить истинную визуальную ограничивающую рамку элемента в WPF, которая рассчитывается ПОСЛЕ всех преобразований. Если я что-то не пояснил в своем вопросе, дайте мне знать.

5
задан Dalal 22 February 2011 в 22:13
поделиться