2

我有一个应用程序,我想动态生成像 2 x 2、3 x 3 和 4 x 4 这样的点 像这样

现在我正在使用以下代码绘制没有动态的点阵:

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() 方法中提前谢谢

4

1 回答 1

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,这是一个介于0和之间的数字1,它是我们坐标所在的canaws宽度的百分比。
  • 乘以宽度得到实际的像素坐标
  • 对高度做同样的事情。
  • 请注意 (float) 强制转换,这是确保百分比不四舍五入为 int 所必需的。
于 2012-05-19T09:25:09.320 回答