2017-09-28 3 views
0

Dans android, nous pouvons faire matrix.setScale(-1, 1); à FLIP_HORIZONTAL une image. J'essaie de faire la même chose sous delphi comme:Quel est l'équivalent de matrix.setScale (-1, 1) sous delphi?

aMatrix := Canvas.Matrix * TMatrix.CreateScaling(-1, 1); 
Canvas.SetMatrix(aMatrix); 

mais ça fonctionne pas :(Qu'est-ce que je manque Comment puis-je FLIP_HORIZONTAL une image dans delphi (à l'intérieur de la toile, afin de jouer avec la matrice)

+0

Je ne suis pas sûr, mais je ne sais que la multiplication de n'est pas commutative, IEA * b ne sont pas les mêmes que b * un –

+0

non, ne savais pas .... mais je pense que vous avez raison, mais pas sûr – noa

Répondre

0
?

Je trouve:

aMatrixRotationCenter.X := (width/2) + Canvas.Matrix.m31; 
aMatrixRotationCenter.Y := (height/2) + Canvas.Matrix.m32; 
aMatrix := Canvas.Matrix * TMatrix.CreateTranslation(-aMatrixRotationCenter.X,-aMatrixRotationCenter.Y); 
aMatrix := aMatrix * TMatrix.CreateScaling(-1, 1); // matrix.setScale(-1, 1); 
aMatrix := aMatrix * TMatrix.CreateTranslation(aMatrixRotationCenter.X,aMatrixRotationCenter.Y); 
Canvas.SetMatrix(aMatrix);