java - 有没有办法在画布循环中制作图像并一遍又一遍地重绘自己?
问题描述
这是学校作业,这是我老师写的:
将图像加载到 JCanvas,并让它自己重绘多次,每次绘图之间的间隔越来越短。拥有 100 张图像后,清除屏幕并重新开始。
这是我到目前为止的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
class MovingImages{
public static void main(String[]args){
JFrame frame = new JFrame("Printing Images");
frame.setSize(800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCanvas canvas = new JCanvas();
frame.add(canvas);
frame.setVisible(true);
int x = 0;
int y = 0;
int num = 100;
BufferedImage image = canvas.loadImage("Earth.png");
while(num<=100 && num>0){
canvas.drawImage(image,x++,y++);
num--;
canvas.sleep(num);
if (num==0){
canvas.clear();
}
}
}
}
任何帮助将不胜感激。
解决方案
看起来您的代码正在执行您所描述的“多次重绘自身,每次绘图之间的间隔越来越短”。
问题是,当您达到 1 而不是 0 时,您需要重置这些值,因为您的循环在达到 0 之前停止,因为 && num>0
:
//Change the number to 1 not 0:
if (num==1){
canvas.clear();
//Make sure you reset the values otherwise it will not loop again:
x = 0;
y = 0;
num = 100;
}
现在它应该根据需要循环。
推荐阅读
- php - PHPMailer 向同一收件人发送重复的电子邮件,但使用不同的随机生成代码进行电子邮件验证
- php - 如何在自定义帖子类型中获取帖子类别
- java - 如何检查jsp是否进入spring mvc中的控制器以及如何从控制器显示列表到jsp?
- neo4j - Neo4J 抛出 IOException 然后定期停止
- ballerina - Ballerina:如何将 PostgreSQL 数据库与 Ballerina App 连接?
- python - 转换和订购时间戳
- authentication - wget 无法从我的 VPS(未经授权的 401)验证和下载文件,但可以从我的笔记本电脑 linux 终端。如何解决?
- reactjs - 仅当请求包含标头时,Lumen 才返回 MethodNotAllowedHTTPException
- java - 如何使用 selenium webdriver (java) 打印网页中的元素
- r - R语法含义使用with