Application des transformations "scale" et "translate" à une matrix
Bonjour,
Je tente actuellement de porter la fonction suivante - écrire en Java ou swift - à l'aide de C#, dans une bibliothèque Windows Phone :
Voici le code Java :
Code:
1 2 3 4 5 6 7
| public Matrix zoom(float scaleX, float scaleY, float x, float y)
{
final Matrix save = new Matrix();
save.set(anotherMatrix);
save.postScale(scaleX, scaleY, x, y);
return save;
} |
et le code swift
Code:
1 2 3 4 5 6 7
| public func zoom(#scaleX: CGFloat, scaleY: CGFloat, x: CGFloat, y: CGFloat) -> CGAffineTransform
{
var matrix = CGAffineTransformTranslate(_touchMatrix, x, y);
matrix = CGAffineTransformScale(matrix, scaleX, scaleY);
matrix = CGAffineTransformTranslate(matrix, -x, -y);
return matrix;
} |
En C#, dans un univers Windows Phone, je possède bien les classes suivantes :
- System.Windows.Media.Matrix
- System.Windows.Media.TranslateTransform
- System.Windows.Media.ScaleTransform
Mais... la méthode Transform des classes TranslateTransform et ScaleTransform fonctionne avec des objets Point et non Matrix.
Comment puis-je alors migrer le code et appliquer les transformations à ma matrice ?
A noter qu'une classe matrice existe aussi dans l'espace de nom XNA et cette classe présente bien des méthode CreateScale et CreateTranslation. Mais XNA n'est-il pas déprécié ? Quelle classe Matrix dois-je alors utiliser pour arriver à mes fins ?
Merci d'avance pour votre aide !