ProxyRenderTransform V2 [Library]

Aucun commentaire

proxyRenderTransform.jpg
Je mets en ligne aujourd'hui la version 2 de la librairie ProxyRenderTransform. Pour rappel, celle-ci utilise les méthodes d'extension pour faciliter l'accès aux noeuds RenderTransform ou leur initialisation. Dans ce dernier cas, la librairie affecte un objet typé TransformGroup à la propriété RenderTransform au sein des objets n'en possédant pas. La collection de transformation est généré de la même manière que Blend pour assurer une compatibilité maximum. Il vous suffit d'ajouter l'assembly ProxyRenderTransform.dll , et vous pourrez accéder très simplement aux noeuds renderTransform de n'importe quel UIElement grâce aux méthodes d'extension :

  • SetX / GetX
  • SetScaleX / GetScaleX
  • SetRotate / GetRotate
  • SetSkewX / SetSkewY

Vous pouvez également obtenir les chemins d'accès aux noeuds existants grâce à des propriétés statiques. Vous n'avez donc plus besoin de vous en souvenir lorsque vous créez des animations dynamiquement :

  • _SCALE_X_PATH // (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
  • _SCALE_Y_PATH
  • _SKEW_X_PATH
  • _SKEW_Y_PATH
  • _ROTATE_PATH
  • _TRANSLATE_X_PATH
  • _TRANSLATE_Y_PATH

Pour finir, vous pouvez récupérer les noeuds de transformation eux-même :

  • GetScaleNode
  • GetTranslateNode
  • GetRotateNode
  • GetSkewNode

Voici un exemple d'utilisation :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Page_Loaded(object sender, RoutedEventArgs e)
{
//any FrameworkElement can now have direct access to his RenderTransform
rec.SetX(605);
Debug.WriteLine( rec.GetX());
//rec.SetX(105);
//rec.SetRotate(60);
//rec.SetScaleX(2);
 
dp.Interval = TimeSpan.FromMilliseconds(10);
dp.Tick += new EventHandler(dp_Tick);
dp.Start();
}
 
void dp_Tick(object sender, EventArgs e)
{
double newX = (double)rec_Copy.GetX() ( 500 - (double)rec_Copy.GetX() ) * .2;
rec_Copy.SetX(newX);
}

Dans cette version, j'ai ajouté l'accès direct au noeud Projection plan...

La librairie est sous licence libre MS-PL licence sur le portail Code Plex ici.
N'hésitez pas à poster si vous rencontrez des bugs ou des difficultés d'utilisation.

Bookmark and Share

Leave a Reply

Security Code: