如何在android canvas中使用drawBitmap定位位图

时间:2015-02-24 09:29:52

标签: android android-canvas android-bitmap

我想在Canvas,Android中使用drawBitmap()将两个位图彼此相邻。

我的onDraw()功能。

protected void onDraw(Canvas canvas) {

    if (currentState == openedState) { 
            fruit1Bitmap = ApplicationServices.textureManager.bitmap[fruitId[0]];
            fruit2Bitmap = ApplicationServices.textureManager.bitmap[fruitId[1]];
            fruit3Bitmap = ApplicationServices.textureManager.bitmap[fruitId[2]];
            src.set(0, 0, fruit1Bitmap.getWidth(), fruit1Bitmap.getHeight());
            dst.set(0,0, this.getWidth()/2, this.getHeight()/2);
            src1.set(0, 0, fruit2Bitmap.getWidth(), fruit2Bitmap.getHeight());
            dst1.set(fruit1Bitmap.getWidth() , 0, this.getWidth()/2, this.getHeight()/2);

            canvas.drawBitmap(fruit1Bitmap, src, dst, null);
            canvas.drawBitmap(fruit2Bitmap, src1, dst1, null);
     } 
}

它在班级public class Dhakkan extends ImageButton内。

当前结果 enter image description here

我想让它展示两个彼此相邻的水果。那么我如何将它们放在ImageButton

2 个答案:

答案 0 :(得分:1)

  • 您计算的第二个目标矩形错误

而不是

dst1.set(fruit1Bitmap.getWidth() , 0, this.getWidth()/2, this.getHeight()/2);

应该是这样的:

dst1.set(fruit1Bitmap.getWidth(), 
    0, 
    fruit1Bitmap.getWidth() + fruit2Bitmap.getWidth(), 
    this.getHeight()/2);

注意正确的坐标。这将绘制第一个旁边的第二个水果,如果它太大,可能会裁剪它。如果你想在图像按钮的前半部分中绘制两个水果,则修复dst的坐标,即第一个水果的目标矩形。您可能还会考虑Kim建议的方法。

答案 1 :(得分:0)

阅读文档怎么样:

drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

使用指定的颜色绘制指定的位图,其顶部/左角位于(x,y),由当前矩阵转换。