Android:使用矩阵绘制位图

7
我正在尝试学习如何在画布上使用位图绘图,需要使用以下内容:
drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint);

因为我需要在几乎每一帧中增加我的PNG的大小,所以我设法通过以下方式实现:
Matrix matrix=new Matrix();
matrix.setScale(0.001f,0.001f);

这对我来说很有效。但是我的问题是如何将图像放置在正确的坐标上。我以为其中任何一个都可以完成它:
matrix.setTranslate(x,y); matrix.postTranslate(x,y);
但我错了,图像总是绘制在0,0坐标上。 在我需要缩放图像之前,我使用以下内容:
canvas.drawBitmap(bmp,x,y,paint);

我在哪里可以指定绘制点呢?我能否使用drawBitmap的矩阵版本来实现?还是我应该如何调整我的图像大小?

2个回答

10

使用矩阵版本的绘制位图。重要的是按正确顺序完成。从单位矩阵开始。然后使用postScale按任意因子缩放它,这将使其增长但不更改原点。然后使用postTranslate平移它,将其向左/右/上/下移动。然后在画布上绘制位图,将矩阵传递给它。它将在复制位图之前通过矩阵进行缩放和移动。


一点代码会非常有帮助。无论如何感谢! - beginner

0
Matrix m = new Matrix();
final float wantedWidth = ...;
final float wantedHeight = ...;
m.postScale(wantedWidth / bitmap.getWidth(), wantedHeight / bitmap.getHeight());
m.postTranslate(x, y);
canvas.drawBitmap(bitmap, m, paint);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接