android - 在 Canvas 上画点像矩阵android

标签 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 
            }

我需要一个公式来在我的 Canvas 中心生成点请帮助我 上面提到的代码是在onDraw()方法中添加的提前致谢

最佳答案

要在 Canvas 上绘制 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之间的数字,是宽度的百分比我们坐标所在的卡诺群岛。
  • 乘以宽度得到实际像素坐标
  • 对高度做同样的事情。
  • 注意( float )转换,这是确保百分比不四舍五入为 int 所必需的。

关于android - 在 Canvas 上画点像矩阵android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663568/

相关文章:

android - 谷歌云消息 : 100 multiple senders limitation

android - 如何为 MenuItem 设置标签?

android:动画可绘制对象被裁剪,边界未调整大小

android 搜索 View 光标与工具栏的相同颜色不可见

android - 在android中播放两个音频文件

android - 使用自定义后端检查和播放应用程序完整性

android - 像 Sony Xperia Contacts 一样右边有字母的 ListView,有可能吗?

java - Android studio 数组生成

java - Libgdx 坐标 Gdx.input.getX() 不正确

android - Appium AndroidDriver 的 DesiredCapabilities