Java 基于宽度、高度和总框创建二维栅格

Java 基于宽度、高度和总框创建二维栅格,java,math,processing,Java,Math,Processing,我试图在屏幕上画2048个框,有宽度和高度。(我用Java制作) 我有以下变量: 宽度=1024 高度=768 人口=2048 基于这些变量,如何绘制包含x列数和y行数的网格,从而使整个布局完全符合所需的宽度和高度 例如: 我的宽度和高度为4x4,总人口为4,因此我有2列和2行 示例2: 我想在上面的屏幕截图中复制完全相同的内容,但我不知道需要循环多少行和列以及每个正方形的大小 我只知道窗口的总宽度/高度,以及我要绘制的框的总数。如果框需要为矩形,有多种可能的解决方案。例如,对于区域12,

我试图在屏幕上画2048个框,有宽度和高度。(我用Java制作)

我有以下变量:

  • 宽度=1024
  • 高度=768
  • 人口=2048
基于这些变量,如何绘制包含x列数和y行数的网格,从而使整个布局完全符合所需的宽度和高度

例如: 我的宽度和高度为4x4,总人口为4,因此我有2列和2行

示例2:

我想在上面的屏幕截图中复制完全相同的内容,但我不知道需要循环多少行和列以及每个正方形的大小


我只知道窗口的总宽度/高度,以及我要绘制的框的总数。

如果框需要为矩形,有多种可能的解决方案。例如,对于区域12,盒子可以是12x1、1x12、4x3、3x4、6x2、2x6等。。更不用说浮动值了

如果方形框正常:

area = available_width * available_height
area_per_box = area / no_of_boxes
length = sqrt(area_per_box)
用获得的长度作为小盒子的宽度和高度填充网格


另一种方法是根据自己的喜好填充网格,并将网格缩放到所需的尺寸。

要自己回答这样的问题,最好的办法是拿出一张纸和一支铅笔,画出一堆例子。标记窗口的宽度和高度,以及每个框的位置、宽度和高度。继续绘制示例,直到注意到图案

堆栈溢出并不是为一般的“我该怎么做”类型的问题而设计的。这是针对特定的“我尝试了X,期望是Y,但得到了Z”类型的问题。你需要一次一件地把这些东西拿出来。尽管如此,我可以试着在一般意义上提供帮助

首先,您需要计算网格应该有多少行和列。从填充到行和列计数并不是只有一种正确的方法。事实上,这甚至可能是不可能的-你会如何划分一个3人的人口?还有多种解决方案:如果您的人口数为20,那么您可以使用1x20、2x10、4x5、5x4、10x2或20x1的网格。我建议你把这当作一个单独的问题来对待,然后就这个问题单独提问

但是一旦你有了行和列的计数,你就可以使用一些基本的数学来计算出每个框的位置和大小。同样,列举一些例子会有所帮助,但基本情况如下:

  float cellWidth = width/columns;
  float cellHeight = height/rows;

  for (int row = 0; row < rows; row++) {
    for (int column = 0; column < columns; column++) {

      float cellX = cellWidth*column;
      float cellY = cellHeight*row;

      rect(cellX, cellY, cellWidth, cellHeight);
    }
  }
float cellWidth=宽度/列;
浮动单元高度=高度/行;
对于(int row=0;row

请注意,我是从中获得这段代码的,但是如果你用谷歌搜索一下,你会在互联网上找到很多例子。如果你仍然不能让它工作,请张贴一个完全显示你的尝试,我们将从那里开始。祝你好运。

我不明白,你能举一个更复杂的例子,例如7x10尺寸吗?你的盒子应该是正方形,还是有窗口纵横比的矩形,还是有任意纵横比的矩形?想象一下,你想用任意数量的盒子(如55)填充整个计算机屏幕,并且你想让它们呈网格行布局。我的问题是,如何确定网格的行数和列数要均匀分布spaced@NabinBhandari在我的脑海里,我想象一个长方形最好,但这并不重要人口与盒子的大小有什么关系?答案是可以的,但仅适用于方形框,尽管我已经编辑了我的答案,以包含有关将总体转换为行和列计数的更多信息,但实际上主要答案保持不变。你在问两个不同的问题。