我正在尝试将位图叠加到另一个位置,将其放在用户触摸的位置。这是代码:
public static Bitmap mergeImage(Bitmap base, Bitmap overlay, float x, float y)
{
Bitmap mBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(mBitmap);
canvas.drawBitmap(base, 0, 0, null);
canvas.drawBitmap(overlay, x, y, null);
return mBitmap;
}
这里的问题是,尽管x&正确获得y坐标(我检查过),叠加位图放置不正确。
当围绕图像的左上部分时,放置是正确的。然而,当我向右和向下移动时,位置似乎有不同的缩放(即如果我触摸屏幕的右下角,叠加层位于图像中间附近,如果我触摸左下角,则位于中间附近左边的图像等等)
两张图像的密度相同(320)。
编辑:新问题,我减少了两个图像的大小,现在放置大致准确。但是将图像保存到SD卡会使叠加图像偏斜到另一个(非常随机的)位置
答案 0 :(得分:0)
我找到了使用Matrix设置位置和缩放x,y
的解决方案 public static Bitmap mergeImage(Bitmap base, Bitmap overlay, float x, float y)
{
Bitmap mBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(mBitmap);
Matrix matrix = new Matrix ();
matrix.postTranslate( x,y);
canvas.drawBitmap(base, 0, 0, null);
canvas.drawBitmap(overlay, matrix, null);
return mBitmap;
}
我花了类似的东西,我找到了解决方案,你可以在siguiete链接中看到我的帖子
canvas.drawBitmap bad Location and size (not placing image correctly)