我正在研究一个小模拟时钟项目来学习Silverlight,显然当绘制钟面时有一个重复的模式,我看到的所有例子实际上重复了xaml并且只是改变角度来获得整个面部,但我想知道是否有更好/更容易/更短的方法来完成相同的结果声明性地(我知道如何以编程方式完成)
这就是我所拥有的,它在第二个画布之后重复,是唯一的差异
<Canvas Width="100" Height="100" RenderTransformOrigin="0.5,0.5">
<Rectangle Fill="Black" Width="6" Height="8" Canvas.Top="1" Canvas.Left="47" RenderTransformOrigin="0.5,0.5" />
</Canvas>
<Canvas Width="100" Height="100" RenderTransformOrigin="0.5,0.5">
<Rectangle Fill="Black" Width="6" Height="8" Canvas.Top="1" Canvas.Left="47" RenderTransformOrigin="0.5,0.5" />
<Canvas.RenderTransform>
<RotateTransform Angle="30"/>
</Canvas.RenderTransform>
</Canvas>
更新:虽然提供的答案是正确的方向,但它们并不具体,加上它们只针对模拟时钟的特定情况,因为与围绕圆圈重复模式的整个范围相反,我尝试了代码从第二个答案,它几乎得到了我想要的东西,但我仍然需要弄清楚如何获得小时/分钟指标,我一直在努力,我得到围绕圆圈的线条,但不是模式中的线条我需要;所以,如果有人出现并给我具体答案,我会接受,否则,我会继续尝试,并会在这里发布答案
答案 0 :(得分:0)
使用带有粗椭圆的虚线图案。 请参阅此处的XAML:http://code.msdn.microsoft.com/trainmaster和应用here。
Ball Trainmaster Cannonball Watch in Silverlight http://xmldocs.net/ball2/background.png
答案 1 :(得分:0)
您也可以使用Path来完成相同的操作。查看Charles Petzold的“All Xaml Clock。”
<!-- Tick marks (small and large). -->
<Path Data="M 0 -90 A 90 90 0 1 1 -0.01 -90"
StrokeDashArray="0 3.14157" />
<Path Data="M 0 -90 A 90 90 0 1 1 -0.01 -90"
StrokeDashArray="0 7.854"
StrokeThickness="6" />
来自http://www.charlespetzold.com/blog/2006/04/070132.html
请注意,这是一个WPF示例。