2009-06-17 5 views
0

Je travaille sur un petit projet d'horloge analogique pour apprendre Silverlight, évidemment quand je dessine le cadran de l'horloge il y a un motif répété, tous les exemples que j'ai vus répètent réellement le xaml et changent juste le angle pour obtenir le visage entier, mais je me demande s'il y a une meilleure/plus facile/plus courte façon d'accomplir le même résultat déclarativement (Je sais comment cela peut être fait par programme)Meilleure méthode pour répéter un modèle de manière déclarative

C'est ce que j'ai, il se répète après la deuxième toile, étant l'angle la seule différence

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

mise à jour: Alors que les réponses fournies sont dans le bon sens, elles ne sont pas spécifiques, et elles ne concernent que le scénario spécifique de l'horloge analogique, contrairement à la possibilité de répéter un motif autour d'un cercle, j'ai essayé le code deuxième réponse et il me fait presque ce que je veux, mais j'ai encore besoin de comprendre exactement comment obtenir les indicateurs heure/minute, j'ai essayé et je reçois des lignes autour du cercle, mais pas celles dans le modèle dont j'ai besoin ; Donc, si quelqu'un vient et me donne la réponse spécifique, je vais accepter cela, sinon, je vais continuer à essayer et afficherai la réponse ici

Répondre

0

Vous pouvez également utiliser un chemin pour accomplir la même. Découvrez "All Xaml Clock" de Charles Petzold.

<!-- 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" /> 

De http://www.charlespetzold.com/blog/2006/04/070132.html

Notez que c'est un exemple WPF.

Questions connexes