4

私は宇宙侵略者のゲームを作成していますが、すべての画像を画面の解像度に比例させたいと思っています。これは、すべての画面サイズで使用でき、すべての画像が画面に収まるように縮小または拡大することを意味します。ゲームはフルスクリーンです。これを行う最も簡単なテクニックは何ですか?また、これはすべてのサイズを設定するための最良の方法ですか?

4

3 に答える 3

5

要するに問題は次のとおりです

Image.getScaledInstance() は完成したスケーリングされた画像を返しません。後で画像ピクセルが使用されるときに、スケーリング作業の多くを残します。

これらの失敗により、画像のサイズを変更する別の方法が必要になる場合があります。次のような方法を試すことができます。

import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Color;
import java.awt.Graphics2D;
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.RenderingHints;

public class ImgUtils {

public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {
    BufferedImage bi = null;
    try {
        ImageIcon ii = new ImageIcon(filename);//path to image
        bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = (Graphics2D) bi.createGraphics();
        g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
        g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    return bi;
}

 }

次のように使用します。

BufferedImage img=new ImgUtils().scaleImage(50,50,"c:/test.jpg");
//now you have a scaled image in img

参考文献:

于 2012-09-18T10:54:02.180 に答える
1

g が Graphics2D オブジェクトのインスタンスであり、theImage が描画するイメージであり、xFactor と yFactor が x と y のスケーリング係数であるとします。

AffineTransformation scaleTransformation = AffineTransformation.getScaleInstance(xFactor, yFactor);
g.draw(theImage, scaleTransformation, null);
于 2012-09-18T10:53:30.733 に答える