WPF 2d图形和c#中的'组'变换

时间:2009-08-26 07:49:33

标签: wpf geometry

我正在编写一个创建图形“拨号”的应用程序,就像一个时钟。表盘中的每个元素都会被创建,然后以顺时针方式添加到表盘中 - 想象创建一个单元素,其中小时1包括分钟笔划,数字'1'和其他装饰,绘制它,然后重复一小时2,等等。

不是重新计算表盘中每个元素的绘图角度和位置,而是根据表盘元素的位置/旋转位置,我可以创建每个元素的所有线条,刻度和文本等作为图形组'然后对整个组执行旋转变换?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

是。使用网格,将所有其他对象和/或控件放在该网格上,然后为网格指定视图转换以将其旋转多个度数。

即。要将网格上的所有内容转换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;