我有一个应用程序,我想在其中动态生成 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
}
我需要一个公式来在我的 Canvas 中心生成点请帮助我 上面提到的代码是在onDraw()方法中添加的提前致谢
最佳答案
要在 Canvas 上绘制 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
之间的数字,是宽度的百分比我们坐标所在的卡诺群岛。 - 乘以宽度得到实际像素坐标
- 对高度做同样的事情。
- 注意( float )转换,这是确保百分比不四舍五入为 int 所必需的。
关于android - 在 Canvas 上画点像矩阵android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663568/