2012-05-19 13 views
2

我有一個應用程序,其中我要生成像2×2,3×3和4×4動態 like this畫出點在機器人帆布等矩陣

現在我繪製點陣點不使用代碼作爲動態如下:

if(test.equals("galmenu2")) 
      { 
      canvas.drawCircle(wid/4,3*ht/8,3, mPaint); 
      canvas.drawCircle(3*wid/4,3*ht/8,3, mPaint); 
      canvas.drawCircle(3*wid/4,5*ht/8,3, mPaint); 
      canvas.drawCircle(wid/4,5*ht/8,3, mPaint); 
      } 
      else if(test.equals("galmenu3")) 
      { 
       canvas.drawCircle(wid/4,3*ht/8,3, mPaint); 
       canvas.drawCircle(wid/2,3*ht/8,3, mPaint); 
       canvas.drawCircle(3*wid/4,3*ht/8,3, mPaint); 
       canvas.drawCircle(wid/4,ht/2,3, mPaint); 
       canvas.drawCircle(wid/2,ht/2,3, mPaint); 
       canvas.drawCircle(3*wid/4,ht/2,3, mPaint); 

       canvas.drawCircle(wid/4,5*ht/8,3, mPaint); 
       canvas.drawCircle(wid/2,5*ht/8,3, mPaint); 
       canvas.drawCircle(3*wid/4,5*ht/8,3, mPaint); 

      } 
      else if(test.equals("galmenu4")) 
      { 
       for(wid=1/8;wid<1;wid+=2/8) 
       { 
       for(ht=5/16;ht<3/4;ht+=1/8) 
       { 
        canvas.drawCircle(wid,ht,3, mPaint); 
       } 
       }//this for loop crash the application 
      } 

,我需要一個公式來產生點在我的畫布的中心,請幫我 上面提到的代碼的onDraw加()方法,在此先感謝

+0

有資格在2天內獲得賞金的問題 –

+1

我想要相同的要求任何一個回答這個問題 – Dinesh

+0

爲什麼會崩潰?代碼中一定是錯誤的,你不覺得嗎? – Hidde

回答

4

要繪製n通過在畫布上n圈,我會使用以下命令:

// n is defined 
for (int i=0; i<n; i++) { 
    for (int j=0; j<n; j++) { 
     canvas.drawCircle(((float)i +.5)/n*(float)width, ((float)j +.5)/n*(float)width, 3, mPaint); 
    } 
} 

這到底是怎麼回事?通過n*n繪圖命令 我們循環:

  • 戰平(i+.5)/n,這是01之間的數字,這是canaws在那裏我們座標的寬度的百分比。
  • 將其乘以寬度得到實際的像素座標
  • 做同樣的高度。
  • 注意(float)強制轉換,這是確保百分比不被整數化爲int所需的。
+1

感謝它的工作很棒!!!!!!!!!!!!!!!!!!!!! :))))))))))) –