2017-09-28 2 views
0

In android können wir tun matrix.setScale(-1, 1); zu FLIP_HORIZONTAL ein Bild. Ich versuche, das gleiche unter DELPHI wie zu tun:Was ist das Äquivalent von matrix.setScale (-1, 1) unter Delphi?

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

aber es wird nicht funktionieren :(Was habe ich verpasst Wie kann ich ein Bild in delphi FLIP_HORIZONTAL (innerhalb der Leinwand, so mit der Matrix spielen)

+0

ich weiß nicht sicher, aber ich weiß, dass die Multiplikationsmatrix ist nicht kommutativ ist iea * b nicht das gleiche wie b * a –

+0

nicht, wusste nicht, .... aber ich denke, du hast recht, aber nicht sicher – noa

Antwort

0
?

ich gefunden:

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); 
Verwandte Themen