我想为Android应用程序创建一个正方形网格(类似于圆形网格),以便为生物医学成像进行一些图像重建,类似于下图所示。
我知道我可以使用Android中的OpenGL库绘制正方形(通过绘制2个三角形)。但是有更快的方法在屏幕上创建许多小方块吗?最重要的是,我需要能够根据我将通过蓝牙接收的一些数据为这些方块着色。
OpenGL似乎非常残酷,因为如果你想要很多,那么颜色和方块都是以非常用户不友好的方式设置的。
感谢您提供的任何见解。
答案 0 :(得分:0)
提取问题在这里有点困难。 "是否有更快的方法在屏幕上创建许多小方块?":是的,如果这些是静态的,那么只需使用图像进行网格显示即可。如果需要以编程方式完成,您可以将其绘制为纹理一次,然后重复使用它。
要使用某种颜色填充特定字段,您需要使用2个三角形过程。但问题是,如果你只需要这样做一次,或者每次看到这个问题时都需要这么做,那就是#34;脏"。如果只有一次那么你可以再次简单地绘制纹理并显示它。实际上,您可能只能绘制到主缓冲区,也不会清除它。
至于"不友好"为了绘制正方形,我完全不同意。与拼写矩阵一起创建方法drawRect(MyRect rect)
,您可能拥有非常受控制的环境。例如,您可能有一个NxN网格,并且可以使用(0, N, 0, N*(screenHeight/screenWidth))
值设置正交矩阵,结果是您的坐标系被标准化,因此每个方格为1x1。这意味着带有i,j
的for循环中的索引数组意味着使用像drawRect(MyRect(j, i, 1, 1, colors[j][i]))
这样简单的东西。
公平的机会是无限的。这取决于您如何制作数据源并将其转换为绘图。这一切都取决于您希望最终结果如何以及您需要什么功能。例如,如果你想要一些"撤消"你需要重新绘制整个东西并绘制到纹理的功能是没有用的。