Android Rect无法正常工作

use*_*882 2 arrays android 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);
}
Run Code Online (Sandbox Code Playgroud)

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

 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);
}
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*Jan 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. 更换循环,以排除循环.