我一直在努力研究一个简单的代码两天了。我尝试了所有的改动,但似乎没有任何改变。 我试图绘制不同颜色的垂直矩形。 在第一个中,我只使用一个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);
}
请问有人可以帮我解决实际存在的问题吗?
答案 0 :(得分:5)
第一件事似乎显然是错误的(可能还有更多):
它们都是相同的值,因此您的矩形是退化的。
Offtopic,但非常相关:每当遇到这样的问题时,你需要将它分解成更小的部分,直到你得到某些东西。这将有助于您了解错误:
答案 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());