Android Matrix无法正常显示,如何解决?

时间:2014-09-29 16:46:00

标签: android canvas matrix

在这种情况下,XML不是因素。我使用onDraw函数覆盖画布并将整个屏幕作为画布提供。

protected void onDraw(Canvas canvas){         canvas.drawColor(Color.BLACK);

    int gemID=0;
    for(int c=0;c<5;c++){
        for(int r=0;r<5;r++){
            gemID= GemField[c][r];
            canvas.drawBitmap(bmps.get(gemID),c,r,null);
        }
    } 

创建要绘制的画布后,我创建矩阵,然后填充矩阵,如下面的代码所示。

private void createGemField(){

    Random rnd= new Random();
    for(int col=0;col<5;col++){
        for(int row=0;row<5;row++){
            int gemNum = rnd.nextInt(4-0);
            GemField[col][row]=gemNum;
        }
    }

}

private void drawGems(){
    int gemID=0;

    for(int col=0;col<5;col++){
        for(int row=0;row<5;row++){

            gemID=GemField[col][row];
            canvas.drawBitmap(bmps.get(gemID),col,row,null);

        }
    }

}

不幸的是,我得到的图像在屏幕的左上角是方形的,有多个物体看起来像是相互缩放。更像是蛇鳞或带状疱疹,物体重叠但不完全。距离矩阵中起始位置的距离越远,它们重叠的越少。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

canvas.drawBitmap(bmps.get(gemID),c,r,null);

此处,cr是画布上绘制位图的点的x和y分量。我假设您的位图大于1px,因此您应将其更改为:

canvas.drawBitmap(bmps.get(gemID), 50 * c, 50 * r, null);或类似的东西;位图之间现在是50px空间。