2016-10-21 5 views
0

キャンバスを8つの垂直の白黒のストライプに分割したいと思います。ループが実行されるたびに色の値を変更するメソッドchangeValueを書きましたが、キャンバスは完全に白です。私のchangeValueメソッドは想定どおりではないと私は思うが、私は理由を説明することはできない。キャンバスをRGBを使って複数のストライプに分割する

これまでのところ、私はこれを得た:

私は8本のストライプのための文が、例えば、これは3本の縦縞ですが、実際に働くイタリア国旗のコードであれば8を書くことではないはず午前
public class Stripe { 

    public boolean switch = false; 

    private void stripes(int[] pixels, int width, int height) { 
     // TODO set some values here 
     int counter = 1; 
     for (int y = 0; y < height; y++) { 
      for (int x = 0; x < width; x++) { 
       int pos = y * width + x; 
       int r, g, b; 
       // TODO code for the flag. 
       r = 255; 
       g = 255; 
       b = 255; 

       for (int i = 0; i < 8; i++) { 
        if (x < (counter * (width - 1))/8) { 
         r = changeValue(); 
         g = changeValue(); 
         b = changeValue(); 
        } 
        counter++; 
        switch ^= true; 

       } 

       pixels[pos] = 0xFF000000 | (r << 16) | (g << 8) | b; 
      } 
     } 
    } 

    public int changeValue() { 
     if (switch) { 
      return 255; 
     } else { 
      return 0; 
     } 
    } 
} 

private void flagItalian(int[] pixels, int width, int height) { 
    // TODO set some values here 
    for (int y = 0; y < height; y++) { 
     for (int x = 0; x < width; x++) { 
      int pos = y * width + x; 
      int r, g, b; 
      // TODO code for the flag. 
      r = 255; 
      g = 0; 
      b = 0; 
      if (x < 2 * (width - 1)/3) { 
       r = 255; 
       g = 255; 
       b = 255; 
      } 
      if (x < (width - 1)/3) { 
       r = 0; 
       g = 255; 
       b = 0; 
      } 
      pixels[pos] = 0xFF000000 | (r << 16) | (g << 8) | b; 
     } 
    } 
} 
+0

と交換してみてください、私はそれはswitch文でも使用されているとおりに、変数の名前としてスイッチを使用することができるかどうかわからないんだけど... – Lucurious

答えて

0

カラーストライプが交互に必要な場合は、古典的な奇数/偶数チェックを行うことができます。代わりにあなたのコードブロックの下に

for (int i = 0; i < 8; i++) { 
    if (x < (counter * (width - 1))/8) { 
    r = changeValue(); 
    g = changeValue(); 
    b = changeValue(); 
    } 
counter++; 
switch ^= true; 

} 

はこの1

if (x%2) { 
    r = 255; 
    g = 255; 
    b = 255 
} else { 
    r = 0; 
    g = 0; 
    b = 0; 
} 
+0

ありがとう!しかし、今ではストライプ数が多くなっていますが、私は8がほしいだけです。 – RayBan

+0

RGBをどのように印刷するのかを知ることができます。あなたが使用した高さと幅のループから、私はあなたが8X8のマトリックス形式でこれを印刷すると推測しました。 – zapping

関連する問題