2

私は2日間、単純なコードに取り組んでいます。私はすべての変更を試しましたが、どれも機能していないようです。さまざまな色の縦長の長方形を描画しようとしています。最初の例では、Rect変数を1つだけ使用して、座標を移動しています。これがコードの関連部分です。

 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

4 に答える 4

5

明らかに間違っていると思われる最初のこと (他にもあるかもしれません):

  • 長方形の最小 x 座標は myCanvas.getWidth()/5*j です
  • 長方形の最大 x 座標は myCanvas.getWidth()/5*j です

どちらも同じ値であるため、長方形は縮退しています。

トピック外ですが、非常に関連性があります。このような問題に遭遇した場合は、何かできるようになるまで、問題をより小さな部分に分解する必要があります。これは、何が問題なのかを理解するのに役立ちます。

  1. すべての部分式 (色、生成された x/y 値など) をローカル変数に抽出して、デバッガーで簡単に検査できるようにします。
  2. ランダムな要素を除外するために、ランダムな色を定義済みの色 (COLOR.YELLOW) に置き換えます。
  3. 計算された四角形を固定四角形 ((10,10) - (20,20) など) に置き換えて、座標計算を除外します。
  4. ループを除外するために、ループを交換します。
于 2012-02-18T07:18:44.027 に答える
1

四角形の幅は 0px です。set() 関数のパラメータは、順番に左/上/右/下です。左と右に同じ値を使用するため、幅は (右-左)=0 です。

于 2012-02-18T07:17:05.883 に答える
0

まず、あなたの座標を見てみましょう:

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

左上隅の x 座標は右下隅と同じであるため、幅 0 の長方形を描画しています。

于 2012-02-18T07:17:49.643 に答える