Android Rect无法正常工作

时间:2012-02-18 06:58:46

标签: android arrays rect

我一直在努力研究一个简单的代码两天了。我尝试了所有的改动,但似乎没有任何改变。 我试图绘制不同颜色的垂直矩形。 在第一个中,我只使用一个Rect变量并移动坐标。这是代码的相关部分。

 Rect myRect1=new Rect();
 Random colorMe=new Random();
for(int j=0;j<5;j++){
    myRect1.set(myCanvas.getWidth()/5*j, 0, myCanvas.getWidth()/5*j, myCanvas.getHeight());
    paint.setColor(Color.rgb(colorMe.nextInt(255), colorMe.nextInt(255), colorMe.nextInt(255)));
    myCanvas.drawRect(myRect1, paint);
}

我尝试的其他改动是通过阵列。 这是代码。

 Rect[] myRect=new Rect[5];
 Random colorMe=new Random();
for(int j=0;j<5;j++){
    myRect[j].set(myCanvas.getWidth()/5*j, 0, myCanvas.getWidth()/5*j, myCanvas.getHeight());
    paint.setColor(Color.rgb(colorMe.nextInt(255), colorMe.nextInt(255), colorMe.nextInt(255)));
    myCanvas.drawRect(myRect[j], paint);
}

请问有人可以帮我解决实际存在的问题吗?

4 个答案:

答案 0 :(得分:5)

第一件事似乎显然是错误的(可能还有更多):

  • 矩形的最小x坐标是myCanvas.getWidth()/ 5 * j
  • 矩形的最大x坐标为myCanvas.getWidth()/ 5 * j

它们都是相同的值,因此您的矩形是退化的。

Offtopic,但非常相关:每当遇到这样的问题时,你需要将它分解成更小的部分,直到你得到某些东西。这将有助于您了解错误:

  1. 将所有子表达式(如颜色和生成的x / y值)提取到局部变量中,以便在调试器中轻松检查它们
  2. 用预定义颜色(COLOR.YELLOW)替换随机颜色,以排除随机元素
  3. 用固定的矩形(例如(10,10) - (20,20))替换caclulated矩形,以排除坐标计算。
  4. 更换循环,以排除循环。

答案 1 :(得分:1)

你的rect的宽度为0px。 set()函数的参数依次为left / top / right / bottom。左右使用相同的值,因此宽度为(右 - 左)= 0。

答案 2 :(得分:0)

让我们先看看你的坐标:

myRect1.set(myCanvas.getWidth()/5*j, 0, myCanvas.getWidth()/5*j, myCanvas.getHeight());

左上角与右下角具有相同的x坐标,因此您绘制的是一个宽度为0的矩形。

答案 3 :(得分:0)

添加此行

myRect[j] = new Rect() 

之前

myRect[j].set(myCanvas.getWidth()/5*j, 0, myCanvas.getWidth()/5*j, myCanvas.getHeight());