首页 > 解决方案 > 有没有办法在画布循环中制作图像并一遍又一遍地重绘自己?

问题描述

这是学校作业,这是我老师写的:

将图像加载到 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();
  }
        
   }
  }
 }

任何帮助将不胜感激。

标签: java

解决方案


看起来您的代码正在执行您所描述的“多次重绘自身,每次绘图之间的间隔越来越短”。

问题是,当您达到 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;
}

现在它应该根据需要循环。


推荐阅读