这是一个非常简单的例子:
我们来一个矩阵:
Matrix matrix = new Matrix();
设置该矩阵以将所有内容缩放两倍:
matrix.setScale(2.0F,2.0F);
在左上角创建一个10×10的矩形,其原点为:
RectF rect = new RectF(0F,0F,10F,10F);
所以当我们打电话时
matrix.mapRect(rect);
我们创建的输入矩形被输出矩形替换,输出矩形是转换输入的结果:
rect.left = 0F;
rect.top = 0F;
rect.right = 20F;
rect.bottom = 20F;
该方法的另一个版本
matrix.mapRect(RectF dst,RectF src);
在不影响输入矩形的情况下执行相同的转换.
什么是矩阵?
考虑一面镜子.镜子会拍摄您的图像并创建图像的水平翻转版本.
考虑麦克风和放大器.他们采取你的声音,并创造一个更响亮的声音版本.
这就是矩阵.这是一个变压器.它接受输入并创建基于输入的输出.所以矩阵可以变换点,矩形,圆形,多边形……
有关详细信息,请参阅我的答案How does Matrix.postScale( sx,sy,px,py) work?
另请查看Affine transformations | Wikipedia.有一个很棒的图形显示不同的仿射变换及其效果.