WPF 2d Графика и «преобразование группы» в c # - PullRequest
0 голосов
/ 26 августа 2009

Я пишу приложение, которое создает графический «циферблат», как часы. Каждый элемент на циферблате создается, а затем добавляется на циферблат по часовой стрелке. Представьте себе, что вы создаете один элемент с часом 1, который включает в себя минутные штрихи, число «1» и другие приукрашивания, рисует его, затем повторяет для часа 2 и т. Д.

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

Спасибо за любую помощь.

1 Ответ

1 голос
/ 26 августа 2009

Да. Используйте сетку, поместите все другие объекты и / или элементы управления в эту сетку, а затем укажите преобразование вида для сетки, чтобы повернуть ее на несколько градусов.

т.е. Чтобы преобразовать все в сетке на 45 градусов, в XAML это будет выглядеть так:

    <Grid x:Name="LayoutRoot" RenderTransformOrigin="0.5,0.5">
        <Grid.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="45"/>
                <TranslateTransform/>
            </TransformGroup>
        </Grid.RenderTransform>
        <Rectangle Fill="White" Stroke="Black" Margin="198,161,265,196"/>
    </Grid>

Этот пример имеет только один прямоугольник на гирде, но концепция абсолютно одинакова независимо от количества включаемых объектов.

Чтобы отрегулировать вращение последнего через C #, вы можете использовать следующее, которое будет поворачивать сетку на 90 градусов:

RotateTransform aRT = new RotateTransform(90);
this.LayoutRoot.RenderTransform = aRT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...