位图组合
通过组合多个位图来创建一个新的位图。
引言
有时我们需要通过组合多个位图来创建一个新的位图。本文将解释如何使用Canvas来实现这一点。
使用代码
假设我们有两个位图left、right,并且left位图比right位图更高。要创建一个水平组合了 left 和 right 的新位图,代码如下所示:
private void horizontalCombine() {
int width = left.getWidth() + right.getWidth();
int height = Math.max(left.getHeight(), right.getHeight());
Bitmap leftRight = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(leftRight);
canvas.drawBitmap(left, 0, 0, new Paint());
canvas.drawBitmap(right, left.getWidth(), 0, new Paint());
imageView.setImageBitmap(leftRight);
}
我将更详细地解释上面的代码。
int width = left.getWidth() + right.getWidth();
int height = Math.max(left.getHeight(), right.getHeight());
Bitmap leftRight = Bitmap.createBitmap(width, height, Config.ARGB_8888);
这将创建一个新的空位图leftRight
,其
- 宽度 = left.getWidth() + right.getWidth()
- 高度 = left.getHeight()(因为left位图更高)
Canvas canvas = new Canvas(leftRight);
canvas.drawBitmap(left, 0, 0, new Paint());
canvas.drawBitmap(right, left.getWidth(), 0, new Paint());
这是设备上的结果。
根据以上解释,我认为您可以像下面这样通过组合多个位图来创建位图:
private void verticalCombine() {
int width = Math.max(left.getWidth(), right.getWidth());
int height = left.getHeight() + right.getHeight();
Bitmap leftRight = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(leftRight);
canvas.drawBitmap(left, 0, 0, new Paint());
canvas.drawBitmap(right, 0, left.getHeight(), new Paint());
imageView.setImageBitmap(leftRight);
}