65.9K
CodeProject 正在变化。 阅读更多。
Home

位图组合

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2013年8月16日

CPOL
viewsIcon

12152

downloadIcon

249

通过组合多个位图来创建一个新的位图。

引言

有时我们需要通过组合多个位图来创建一个新的位图。本文将解释如何使用Canvas来实现这一点。

使用代码

假设我们有两个位图leftright,并且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);
}
© . All rights reserved.