2014-09-29 71 views
1

XML不是这种情况下的因素。我用onDraw函数覆盖画布,并将整个画面作为画布提供。Android Matrix显示不正确,我该如何解决?

保护无效onDraw(画布画布){ 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); 
     } 
    } 

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

私人无效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); 

     } 
    } 

} 

不幸的是我得到的图像与多个对象在屏幕的左上角方形似乎像他们在缩放彼此。更像是一个蛇鳞或带状疱疹,物体重叠但不完全。离矩阵起始位置越远,重叠越少。任何想法为什么这可能会发生?

回答

0

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

这里,cr是x,并且其中所述位图绘制在画布上的点的y分量。我假设你的位图大于1px,所以你应该把它改成:

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

+0

Omg非常感谢你。我不能相信我没有注意到,你解决了我的问题。 – MarkEjr 2014-09-29 17:21:11

+0

!!!!现在回到完成这个项目。 – MarkEjr 2014-09-29 17:22:01

+0

好酷,我很高兴我可以帮助:-)你能接受这个答案吗? – 2014-09-29 17:44:36

相关问题