当在画布上绘制一张位图时,可以使用该Matrix对象。
canvas.drawBitmap(bmp, matrix, paint);
这将代替之前示例中使用的drawBitmap方法。
为了使得Matrix对象以某种方式更改图像,可以用不同的值替换任何一个现有的数字。如果将第一个数字从1改为.5,那么将在x轴上将图像压缩50%,如图3-5所示。第一个数字会作用于源图像的x坐标,从而影响结果图像的x坐标。
.5 0 0
0 1 0
0 0 1
Matrix matrix = new Matrix();
matrix.setValues(new float[] {
.5f, 0, 0,
0, 1, 0,
0, 0, 1
});
canvas.drawBitmap(bmp, matrix, paint);
如果改变矩阵,使x坐标也受源图像的y坐标影响,那么可以修改第二个数字。结果如图3-6所示。
Matrix matrix = new Matrix();
matrix.setValues(new float[] {
1, .5f, 0,
0, 1, 0,
0, 0, 1
});
canvas.drawBitmap(bmp, matrix, paint);