【问题标题】:Rendering an isometric grid渲染等距网格
【发布时间】:2012-09-15 02:51:55
【问题描述】:

我正在为等距游戏制作地图编辑器,但在渲染等距引导网格(显示对象放置位置的网格)上有点卡住。也就是说,我需要在 Graphics 对象上画线,使其形成一个具有可变宽度和高度的单元格的网格。我该怎么做才能做到这一点?

到目前为止,我有:

//The number of cells in each direction
int nv=h/cellh;
int nh=w/cellw;
for(int i=1;i<=nv;++i){
    g.drawLine(0,i*cellh,i*cellh*2,0);
}

但这只是从左侧开始绘制从左下角到右上角的线。

【问题讨论】:

  • 在纸上画出你的网格,并用它来帮助找出绘制网格的算法。
  • 气垫船,我已经试过了。
  • 这是一个逻辑问题。我不太了解您的 for 循环(或者我可能只是累了),但我会这样做:for(每行(或您喜欢的列)单元格)从 (x,y) 中画一条线从第一个单元格到最后一个单元格的终点。 //无论如何,你应该有一个单元格数组。

标签: java swing isometric


【解决方案1】:

这将按您的预期工作:

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(Color.GREEN);
    int width = getWidth();
    int height = getHeight();
    int sizeW = 50;
    int sizeH = 50;
    int countW = width / sizeW;
    int countH = height / sizeH;

    for (int i = 0; i <= countW + countH; i++) {
        g.drawLine(0, i * sizeH, i * sizeH, 0);
        g.drawLine(width - i * sizeW, 0, width, i * sizeW);
    }
}

【讨论】:

  • 这是一个普通网格:/ 我需要一个等距网格,即斜率 1/2 和 -1/2 的线在 Graphics 对象上交叉。
  • 我已将答案编辑为类似于“斜率 1/2 和 -1/2 的线”,如上述评论中所述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 2016-04-30
  • 1970-01-01
相关资源
最近更新 更多