delphi下的matrix.setScale(-1,1)相当于什么?

时间:2017-09-28 14:40:07

标签: delphi firemonkey

在Android中,我们可以matrix.setScale(-1, 1); FLIP_HORIZONTAL 一张图片。我尝试在delphi下做同样的事情:

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

但是它不起作用:(我错过了什么?我怎么能在delphi中使用FLIP_HORIZONTAL图像(在画布内部,所以用矩阵播放)

1 个答案:

答案 0 :(得分:0)

我找到了:

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