【问题标题】:How to enlarge pixels? - Java如何放大像素? - 爪哇
【发布时间】:2013-09-17 13:22:09
【问题描述】:

我正在尝试用 Java 制作一个简单的游戏,并且我有一个精灵表。我现在可以显示精灵表的单个部分,但是现在我将如何放大每个精灵? (每个精灵只有 16 x 16 像素)

这是我的 Sprite Sheet 代码:

public class SpriteSheet {

    public BufferedImage[] getTilesToArray(String filePath, int tileWidth,
            int tileHeight) {

        BufferedImage tileSheet;

        try {
            tileSheet = ImageIO.read(SpriteSheet.class
                    .getResourceAsStream(filePath));

        } catch (IOException e) {
            System.out.println("Error loading sprite sheet");
            return null;

        }

        int yTiles = tileSheet.getHeight() / tileHeight;

        BufferedImage[] images = new BufferedImage[yTiles];

        for (int index = 0; index < yTiles; index++) {

            BufferedImage img = tileSheet.getSubimage(0, index * tileHeight,
                    tileWidth, tileHeight);

            Graphics g = img.getGraphics();
            g.drawImage(img, 100, 100, 109, 109, null);
            g.dispose();

            images[index] = img;

        }
        return images;
    }
}

还有我的主要课程:

 public class Main extends JFrame {

    private SpriteSheet s = new SpriteSheet();

    private BufferedImage[] sprites = s.getTilesToArray("/spritesheettest.png",
            16, 16);

    public Main() {
        super("Game Compnents");
        setSize(500, 600);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

    }

    public static void main(String[] args) {
        Main m = new Main();
    }

    public void paint(Graphics g) {
        g.drawImage(sprites[0], 101, 101, null);
    }

}

我也看过很多关于精灵表的游戏编程教程,但它们的速度太快了,以至于我不明白发生了什么。我应该拿起一本书还是有一种简单的方法可以让精灵变大?

【问题讨论】:

  • "How to enlarge the sprites?" -- 获得更大的精灵图像。您不能简单地放大任何图像而不期望图像质量下降。

标签: java sprite sprite-sheet image-enlarge


【解决方案1】:

您可以使用Image.getScaledInstance()

当然,缩放越大,您就会得到像素化。最好从高分辨率图像开始并按比例缩小。

【讨论】:

  • 所以...我应该制作更大的精灵?
  • @BaconLover:你是如何“制作”它们的?通常你必须获得更大的精灵。
  • 这是最简单的方法。另外,不要重写 paint() 方法来进行自定义绘画。阅读 Custom Painting 上的 Swing 教程,了解正确的方法。
  • @HovercraftFullOfEels 我只是用 Paint.NET 制作它们。
猜你喜欢
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2021-11-27
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多