Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 251|回复: 0

[图像处理学习]雪花漂漂

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 23:57:15 | 显示全部楼层 |阅读模式
    程序运行图:
    1. [img]http://img.javaxxz.com/2014/10/31/235713890.jpg[/img]
    2. import javax.swing.*;
    3. import java.awt.*;
    4. import java.awt.event.*;
    5. import java.awt.image.*;
    6. import java.util.Random;
    7. public class TestSnow extends JFrame{
    8.    AnimationCanvas canvas;
    9.    JButton startButton,stopButton;
    10.    public TestSnow(){
    11.      super("Snow");
    12.      Container container=getContentPane();
    13.      canvas=new AnimationCanvas();
    14.      container.add(canvas);
    15.      startButton=new JButton("Start");
    16.      startButton.addActionListener(new ButtonListener());
    17.      stopButton=new JButton("Stop");
    18.      stopButton.addActionListener(new ButtonListener());
    19.      JPanel panel=new JPanel();
    20.      panel.add(startButton);panel.add(stopButton);
    21.      container.add(BorderLayout.SOUTH,panel);
    22.      addWindowListener(new WindowEventHandler());
    23.      setSize(600,500);
    24.      show();
    25.      }
    26.      class WindowEventHandler extends WindowAdapter{
    27.         public void windowClosing(WindowEvent e){
    28.         System.exit(0);
    29.         }
    30.      }
    31.      class ButtonListener implements ActionListener{
    32.          public void actionPerformed(ActionEvent e){
    33.               JButton temp=(JButton)e.getSource();
    34.               if(temp.equals(startButton)){
    35.                   canvas.start();
    36.               }else if(temp.equals(stopButton)){
    37.                  canvas.stop();
    38.               }
    39.        }
    40.    }
    41.    public static  void main(String args[]){
    42.         new TestSnow();
    43.   }
    44. }
    45. class AnimationCanvas extends JPanel implements Runnable
    46. {
    47.     Thread mainThread ;
    48.     Image image;
    49.     BufferedImage bi;
    50.     Random rand ;
    51.     int  snows, wind, threadSleep, snowSize ;
    52.     int[] snowX, snowY ;
    53.   //  long stopTime = 0;
    54.     Dimension dim ;
    55.     MediaTracker mt ;
    56.    AnimationCanvas()
    57.     {
    58.      
    59.         rand = new Random();
    60.         setSize(600,450);
    61.         dim=getSize();
    62.         
    63.         snows =150;
    64.         snowSize =3 ;
    65.         threadSleep =80;
    66.         snowX = new int[snows];
    67.         snowY = new int[snows];
    68.         for(int i = 0; i < snows; i++)
    69.         {
    70.         
    71.             snowX[i] = rand.nextInt() % (dim.width / 2)
    72.                             + dim.width / 2;
    73.             snowY[i] = rand.nextInt() % (dim.height / 2)
    74.                             + dim.height / 2;
    75.         
    76.         }
    77.         image=getToolkit().getImage("022.jpg");
    78.         MediaTracker mt = new MediaTracker(this);
    79.         mt.addImage(image, 0);
    80.         try
    81.         {
    82.         
    83.             mt.waitForID(0);
    84.         
    85.         }
    86.         catch(InterruptedException _ex) { return; }
    87.         
    88.    
    89.     }
    90.     public void start()
    91.     {

    92.         if(mainThread == null)
    93.         {
    94.             mainThread = new Thread(this);
    95.             mainThread.start();

    96.         }

    97.     }
    98.     public void stop()
    99.     {
    100.         if(mainThread!=null)
    101.           mainThread.interrupt();
    102.         mainThread = null;

    103.     }
    104.     public void run()
    105.     {
    106.         while(mainThread != null)
    107.         {

    108.             try
    109.             {

    110.                 Thread.sleep(threadSleep);

    111.             }
    112.             catch(InterruptedException _ex) { return ; }
    113.             repaint();

    114.         }

    115.     }
    116.     public void drawBackSnow(Graphics2D g)
    117.     {
    118.         g.setColor(Color.white);
    119.         for(int i = 0; i < snows; i++)
    120.         {
    121.             g.fillOval(snowX[i], snowY[i], snowSize, snowSize);
    122.             snowX[i] += rand.nextInt() % 2 + wind;
    123.             snowY[i] += (rand.nextInt() % 6 + 5) / 5 + 1;
    124.             if(snowX[i] >= dim.width) snowX[i] = 0;
    125.             if(snowX[i] < 0) snowX[i] = dim.width - 1;
    126.             if(snowY[i] >= dim.height || snowY[i] < 0)
    127.             {
    128.                 snowX[i] = Math.abs(rand.nextInt() % dim.width);
    129.                 snowY[i] = 0;
    130.             }
    131.         }
    132.         wind = rand.nextInt() % 5 - 2 ;
    133.     }
    134.     public void paintComponent(Graphics g)
    135.     {
    136.          super.paintComponent(g);
    137.          Graphics2D g2d=(Graphics2D)g;
    138.          Dimension d=getSize();
    139.          bi=new BufferedImage(d.width,d.height,BufferedImage.TYPE_INT_ARGB);
    140.          Graphics2D big=bi.createGraphics();
    141.          big.setColor(Color.black);
    142.          big.fillRect(0, 0, d.width,d.height);
    143.          big.drawImage(image, 0, 0, this);
    144.          drawBackSnow(big);
    145.          g2d.drawImage(bi, 0, 0, null);
    146.          big.dispose();
    147.     }
    148. }
    149.                
    复制代码


      
      
       
       

         
       

         
       
      



    源码下载:http://file.javaxxz.com/2014/10/31/235714656.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 01:08 , Processed in 0.403508 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表