我已经在java中加载了一个图像,但它看起来像是放大了,因为边缘已经消失在图像中
正在加载内容 我尝试了很多方法来尝试修复它。 我正在尝试用 java 制作一个基于 Windows 95 文本的冒险游戏,一切都很顺利,但上述图像加载问题。
代码如下,乱七八糟的请忽略
package com.TTG1.screen;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class Game extends JFrame{
Image dbImage;
Graphics dbg;
double startTime;
double tempTime;
Thread thread = new Thread();
public Color WIN95GREEN = new Color(33, 135, 99);
public int WIDTH = 320;
public int HEIGHT = 240;
public int SCALE = 2;
public boolean boot = true;
BufferedImage bu;
BufferedImage tb;
BufferedImage d;
public Game() {
setSize(WIDTH * SCALE, HEIGHT * SCALE);
setVisible(true);
setBackground(Color.white);
setTitle("Swodniw 21");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setStartTime();
loopTime();
}
public void paint(Graphics g){
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
draw(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void setStartTime(){
if(boot){
startTime = System.currentTimeMillis();
System.out.println("Time Set!");
}
}
public void draw(Graphics g){
if(boot){
try{
bu = ImageIO.read(getClass().getResource("/images/load.png"));
d = ImageIO.read(getClass().getResource("/images/desktop.png"));
}catch(Exception e){
e.printStackTrace();
}
g.drawImage(bu, 0, 0, null);
}
else{
g.drawImage(d, 0, 0, null);
}
repaint();
}
public static void main(String[] args){
Game game = new Game();
}
public void loopTime(){
while(boot){
System.out.println(tempTime - startTime);
tempTime = System.currentTimeMillis();
if(tempTime - startTime > 5000){
boot = false;
System.out.print("boot set to false");
}
}
}
}
最佳答案
你必须做两个技巧
- 绘制到 ContentPane 而不是直接绘制到框架
调整 ContentPane 的大小,而不是框架的大小
public Game() { setContentPane(new DrawPanel()); getContentPane().setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE)); pack(); ... //setSize(WIDTH * SCALE, HEIGHT * SCALE); ... } class DrawPanel extends JPanel { @Override public void paintComponent(Graphics g) { dbImage = createImage(getWidth(), getHeight()); dbg = dbImage.getGraphics(); draw(dbg); g.drawImage(dbImage, 0, 0, this); } }
关于Java 图像出现放大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25548716/