Лучший способ повторить шаблон декларативно - PullRequest
0 голосов
/ 17 июня 2009

Я работаю над небольшим проектом аналоговых часов, чтобы изучить 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>

обновление: хотя предоставленные ответы направлены в правильном направлении, они не являются конкретными, плюс они касаются только конкретного сценария аналоговых часов, в отличие от всего объема повторения шаблона вокруг круга, я попробовал код из второго ответа, и это почти дает мне то, что я хочу, но мне все еще нужно выяснить, как именно получить индикаторы часов / минут, я пытался, и я получаю линии по кругу, но не те, что в схеме Я нуждаюсь; поэтому, если кто-то придет и даст мне конкретный ответ, я приму это, в противном случае я буду продолжать пытаться и опубликую ответ здесь

Ответы [ 2 ]

0 голосов
/ 17 июня 2009

Вы также можете использовать Путь для достижения того же. Посмотрите "Все часы Ксамла" Чарльза Петцольда.

<!-- 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.

0 голосов
/ 17 июня 2009

используйте тире с толстым эллипсом. см. XAML здесь: http://code.msdn.microsoft.com/trainmaster и приложение здесь .

Часы с шариками Trainmaster Cannonball в Silverlight http://xmldocs.net/ball2/background.png

...