Альтернатива абсолютному позиционированию точек фигур - PullRequest
7 голосов
/ 02 октября 2011

Мне было интересно, есть ли способ в WPF создать фигуру (например, многоугольник, линия, ...), но вместо абсолютного позиционирования точек фигуры мы могли бы использовать что-то вроде процента.

Например, вместо строки с абсолютным позиционированием, как это: (X1 = 0, Y1 = 50, X2 = 100, Y2 = 50), мы могли бы иметь строку с процентными значениями (от 0 до 1), как это (X1 = 0, Y1 = 0,5, X2 = 1, Y2 = 0,5, где 1 соответствует размеру родительского элемента). Поэтому независимо от размера родительского объекта форма всегда будет пропорциональна его родительскому элементу.

Это можно сделать с помощью свойств зависимостей, но я бы нашел это намного чище, если бы был способ сделать это с помощью чего-то, как я описал. Я надеюсь, что я не пропустил что-то действительно очевидное, что делает именно это ...

Спасибо!

1 Ответ

4 голосов
/ 02 октября 2011

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

<Path Width="100" Height="100" Stroke="Red">
    <Path.Data>
        <LineGeometry  StartPoint="0 0" EndPoint="1 1">
            <LineGeometry.Transform>
                <ScaleTransform ScaleX="{Binding Path=Width, RelativeSource={RelativeSource FindAncestor, AncestorType=Path}}"
                                ScaleY="{Binding Path=Height, RelativeSource={RelativeSource FindAncestor, AncestorType=Path}}" />
            </LineGeometry.Transform>
        </LineGeometry>
    </Path.Data>
</Path>

Это должно нарисовать красную линию с абсолютными точками (0, 0) до (100, 100).

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