我正在编写一个创建图形“拨号”的应用程序,就像一个时钟。表盘中的每个元素都会被创建,然后以顺时针方式添加到表盘中 - 想象创建一个单元素,其中小时1包括分钟笔划,数字'1'和其他装饰,绘制它,然后重复一小时2,等等。
不是重新计算表盘中每个元素的绘图角度和位置,而是根据表盘元素的位置/旋转位置,我可以创建每个元素的所有线条,刻度和文本等作为图形组'然后对整个组执行旋转变换?
感谢您的帮助。
答案 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;