Как можно изменить размер элемента WPF после поворота, а не раньше? - PullRequest
3 голосов
/ 17 сентября 2009

У меня есть простой, горизонтальный <Line> элемент. К этой линии применен RotateTransform, который наклоняет линию под любым углом, который я выберу. Проблема в том, что отображаемая длина строки вычисляется до преобразования применяется. В результате после поворота строка больше не соответствует родительскому элементу.

Мой текущий код выглядит примерно так, используя 15 ° в качестве примера:

<Grid Background="Orange">
    <Line   HorizontalAlignment="Left" VerticalAlignment="Bottom"
            RenderTransformOrigin="0,0" Stretch="UniformToFill"
            StrokeThickness="1" Stroke="Green" X1="0" Y1="0" X2="1" Y2="0">
        <UIElement.RenderTransform>
            <RotateTransform Angle="-15" />
        </UIElement.RenderTransform>
    </Line>
</Grid>

Результат таков:
http://img179.imageshack.us/img179/2592/slantpartial.png
Как показано, линия не соприкасается с правой стороной элемента управления из-за поворота. Мне нужно, чтобы линия растягивалась до максимально возможного размера и полностью заполняла его родительский элемент управления, независимо от того, к чему я установил угол. Угол будет динамически изменяться во время выполнения, и я не могу использовать расчет уклона в моем текущем проекте. Мне нужно сохранить RotateTransform как средство наклонной линии.

Пример того, что мне нужно сделать - снова, используя 15 ° в качестве примера:
http://img42.imageshack.us/img42/8276/slantcomplete.png

Ответы [ 3 ]

1 голос
/ 17 сентября 2009

Вы можете попробовать преобразование масштаба перед преобразованием поворота:

<UIElement.RenderTransform>
  <TransformGroup>
    <ScaleTransform ScaleX="2.0" />
    <RotateTransform Angle="-15" />
  </TransformGroup>
</UIElement.RenderTransform>
1 голос
/ 17 сентября 2009

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

0 голосов
/ 17 сентября 2009

Самое простое решение - динамически изменять значения X и Y и не использовать RenderTransform. Почему вычисления наклона не могут быть использованы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...