java - 在 for 循环中绘制图像 x 次

标签 java arrays for-loop paint

我正在努力创造我的世界,我将所有 x 坐标都放在一个数组中,并且想使用 for 循环将其绘制到屏幕上。它可以容纳 27 个值,但是我的问题是我不知道用什么来填充其余参数。

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX; i++){
        g2d.drawImage(getBlockIMG(), , ,null); //img, x, y, null
    }
}

全类

package com.questkings.game;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;

import javax.swing.ImageIcon;

public class MapLayout {

int[] blockPlacementX = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300,
        330, 360, 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720,
        750, 780, 810};

int[] blockPlacementY = { };

private Game game;

public MapLayout(Game game){
    this.game=game;
}

//Map size 800(x), 400(y)

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX; i++){
        g2d.drawImage(getBlockIMG());
    }
}

public Image getBlockIMG(){
    ImageIcon ic = new  ImageIcon("C:/Users/AncientPandas/Desktop/QuestKings/Misc/Images/Sprites/grassWall.png");
    return ic.getImage();
}

public Rectangle getBoundsBlock(){
    return new Rectangle(0, 345, 810, 1);
}

}

所以我尝试了,但是它画得很快然后就消失了。有什么想法吗?

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX[27]; i++){
        g2d.drawImage(getBlockIMG(), blockPlacementX[0]++, blockPlacementY [0], null);
    }
}

最佳答案

如果我错了,请纠正我,但您是否尝试使用预定义的坐标数组沿 x 轴平铺给定的一组(或一组)图像。

如果您有两个 X 和 Y 坐标数组(长度相等),则对数组进行简单迭代即可实现如下所示的效果:

public void paint(Graphics2D g2d){
    for(int i = 0; i < blockPlacementX.length; i++){
        g2d.drawImage(getBlockIMG(), blockPlacementX[i], blockPlacementY[i], null);
    }
}

如果您只有一个 Y 坐标,则只需将 blockPlacementY[i] 替换为包含 Y 坐标的变量即可。

如果 X 和 Y 坐标数组的长度不同,则需要弄清楚如何根据某些规则集为每个图像分配坐标。

关于java - 在 for 循环中绘制图像 x 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27154121/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java - 分布式Java编译器

c++ - 在其他类中实现类似 std::array 的构造函数

javascript - 递归循环数组并返回项目数?

java - Android Spinner 每行的不同背景

python - 打印 Pandas 数据框中每一列的唯一值

java - 从 Java 有条件地跳过 Maven 配置文件

java - 如何在 Apache Camel DSL 中回滚事务?

sql - 读取电子邮件到用户名映射的简单方法,如果存在,则只需使用该值而不是多个 IF ELSE 条件

c++ - 这个for循环中 "int factorial = 1"的解释