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.
