在画布上画点像矩阵android

时间:2012-05-19 08:16:53

标签: android

我有一个应用程序,我想动态生成像2 x 2,3 x 3和4 x 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()方法中添加的,在此先感谢

1 个答案:

答案 0 :(得分:4)

要在画布上绘制nn个圈子,我会使用以下内容:

// 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所必需的。