<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java究竟怎么玩?

      天地程序已定棋,人間大數(shù)待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理
      效果圖如下:


      源碼:
      AirslakeImage.java
      package org.test;

      import java.awt.Button;
      import java.awt.Color;
      import java.awt.Frame;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Panel;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      import java.awt.image.PixelGrabber;
      import java.util.Random;

      import org.loon.framework.game.image.Bitmap;
      import org.loon.framework.game.image.LColor;
      /**
       * <p>Title: LoonFramework</p>
       * <p>Description:java實(shí)現(xiàn)圖片風(fēng)化效果</p>
       * <p>Copyright: Copyright (c) 2007</p>
       * <p>Company: LoonFramework</p>
       * 
      @author chenpeng  
       * @email:ceponline@yahoo.com.cn 
       * 
      @version 0.1
       
      */

      public class AirslakeImage extends Panel implements Runnable, ActionListener {

          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;
          
          
      static final public int _WIDTH = 400;
          
          
      static final public int _HEIGHT = 400;
          
          
      private boolean _isRun=false;

          
      private Image _img;
          
          
      private Image _screen;
          
          
      private Graphics _back;

          
      private int _imgWidth;
          
      private int _imgHeight;

          
      private Fraction[] _fractions;

          
      private Thread _timer;

          
      private Button _meganteButton;
          
      private Button _revivalButton;


          
      private Random _rand = new Random();

          
      public AirslakeImage() {
              
              _screen
      =new Bitmap(_WIDTH,_HEIGHT).getImage();
              
              _back
      =_screen.getGraphics();
              
              setSize(_WIDTH, _HEIGHT);

              _meganteButton 
      = new Button("破碎圖片");
              _meganteButton.addActionListener(
      this);
              add(_meganteButton);

              _revivalButton 
      = new Button("還原圖片");
              _revivalButton.addActionListener(
      this);
              add(_revivalButton);
              _revivalButton.setEnabled(
      false);

              loadImage(
      "role.png");

              init(_img);
          }

          
          
      /**
           * 初始化image圖像,分解其中像素
           * 
      @param _img
           
      */

          
      private void init(Image _img) {
              
      if (_timer != null{
                  _timer
      =null;
                  _isRun
      =false;
              }

              _fractions 
      = new Fraction[_imgWidth * _imgHeight];
              PixelGrabber pg 
      = new PixelGrabber(_img, 00, _imgWidth, _imgHeight, true);
              
      try {
                  pg.grabPixels();
              }
       catch (InterruptedException e) {
                  e.printStackTrace();
              }

              
      int pixel[] = (int[]) pg.getPixels();
           
              
      //重新封裝像素
              for (int y = 0; y < _imgHeight; y++{
                  
      for (int x = 0; x < _imgWidth; x++{
                      
      int n = y * _imgWidth + x;
                      _fractions[n] 
      = new Fraction();
                      
      double angle = _rand.nextInt(360);
                      
      double speed = 10.0 / _rand.nextInt(30);
                      _fractions[n].x 
      =   x+90;
                      _fractions[n].y 
      =   y+20;
                      _fractions[n].vx 
      = Math.cos(angle * Math.PI / 180* speed;
                      _fractions[n].vy 
      = Math.sin(angle * Math.PI / 180* speed;
                      _fractions[n].color 
      = pixel[n];
                      _fractions[n].countToCrush 
      = x / 6 + _rand.nextInt(10);
                  }

              }

          }

          
          
      public void update(Graphics g){
              paint(g);
          }

          
          
      public void paint(Graphics g){
              
      //變更背景色
              _back.setColor(Color.WHITE);
              
      //清空背景
              _back.fillRect(00, _WIDTH, _HEIGHT);

              
      for (int n = 0; n < _imgWidth * _imgHeight; n++{
                  
      int x = (int) _fractions[n].x;
                  
      int y = (int) _fractions[n].y;
                  LColor color
      =LColor.getLColor(_fractions[n].color);
                  
      //純黑色區(qū)域不讀取
                  if(!LColor.equals(color, LColor.fromArgb(0,0,0))){
                  
      //獲得rgb三色
                  int red = color.R;
                  
      int green = color.G;
                  
      int blue = color.B;
                  _back.setColor(
      new Color(red, green, blue));
                  
      //繪制
                  _back.drawLine(x, y, x, y);
                  }

              }

              g.drawImage(_screen, 
      00this);
          }


          
      public void actionPerformed(ActionEvent e) {
              
      if (e.getSource() == _meganteButton) {
                  execute();
                  _meganteButton.setEnabled(
      false);
                  _revivalButton.setEnabled(
      true);
              }
       else if (e.getSource() == _revivalButton) {
                  init(_img);
                  repaint();
                  _meganteButton.setEnabled(
      true);
                  _revivalButton.setEnabled(
      false);
              }

          }




          
      /**
           * 加載圖像
           * 
      @param filename
           
      */

          
      private void loadImage(String filename) {
              Bitmap bitmap 
      = new Bitmap(("./image/"+filename).intern());
              
      //替換透明區(qū)域顏色(象素化后,轉(zhuǎn)為rgb形式的透明區(qū)域色值將顯示為r=0,g=0,b=0),可以直接用pixel識(shí)別透明區(qū)域,也可以替換或跳過該區(qū)域)
              _img=bitmap.getImage();
              _imgWidth 
      = _img.getWidth(this);
              _imgHeight 
      = _img.getHeight(this);
          }



        
          
      /**
           * 執(zhí)行操作
           *
           
      */

          
      private void execute() {
              _timer 
      = new Thread(this);
              _timer.start();
              _isRun
      =true;
          }

          
          
      class Fraction {
              
      //圖片在窗體中x
              public double x;
              
      //圖片在窗體中y
              public double y;
              
      //顯示圖x
              public double vx;
              
      //顯示圖y
              public double vy;
              
      //color
              public int color; 
              
      //變形顆粒數(shù)量
              public int countToCrush; 
          }

          
              
      public void run() {
                  
      while(_isRun){
                  
      for (int n = 0; n < _imgWidth * _imgHeight; n++{
                      
      if (_fractions[n].countToCrush <= 0
                          _fractions[n].x 
      += _fractions[n].vx;
                          _fractions[n].y 
      += _fractions[n].vy;
                          _fractions[n].vy 
      += 0.1
                      }
       else {
                          _fractions[n].countToCrush
      --;
                      }

                   
                  }

                  
      //間隔
                  try {
                      Thread.sleep(
      60);
                  }
       catch (InterruptedException e) {
                      e.printStackTrace();
                  }

                  repaint();
                  }

              }

          
          
          
      public static void main(String[]args){
              java.awt.EventQueue.invokeLater(
      new Runnable() {
                  
      public void run() {
                      Frame frm 
      = new Frame("java實(shí)現(xiàn)圖片風(fēng)化效果");
                      frm.add(
      new AirslakeImage());
                      frm.setResizable(
      false);
                      frm.setSize(_WIDTH, _HEIGHT);
                      frm.addWindowListener(
      new WindowAdapter(){
                          
      public void windowClosing(WindowEvent e){
                              System.exit(
      0);
                          }

                      }
      );
                      frm.setLocationRelativeTo(
      null);
                      frm.setVisible(
      true);
                  }

              }
      );
          }

      }
      posted on 2008-02-14 16:05  cping  閱讀(244)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 少妇被黑人到高潮喷出白浆| 精品国产成人国产在线视| 亚洲欧美综合中文| 亚洲热视频这里只有精品| 亚洲AV网一区二区三区| 97成人碰碰久久人人超级碰oo | 一区二区三区在线 | 欧洲| 亚洲成av人片在www鸭子| 国产精品白丝久久AV网站| 午夜高清福利在线观看| 办公室强奷漂亮少妇同事| 自拍视频在线观看成人| 小嫩批日出水无码视频免费 | 婷婷五月综合丁香在线| 亚洲一区av在线观看| 国产一区国产二区在线视频| 四虎影视国产精品永久在线| 久久精品熟女亚洲av艳妇| 另类专区一区二区三区| 日本东京热一区二区三区| 婷婷99视频精品全部在线观看| 亚洲午夜成人精品电影在线观看| 一道本AV免费不卡播放| 国产精品亚洲二区在线播放| 成人免费区一区二区三区| 国产又色又爽又黄的视频在线| 亚洲色偷偷偷网站色偷一区| 国产99视频精品免费视频36| 彰武县| 亚洲成av人在线播放无码| 一区二区三区国产亚洲自拍| 无套内谢少妇毛片aaaa片免费| 亚洲精品一区二区美女| 国产精品亚洲аv无码播放| 综合偷自拍亚洲乱中文字幕| 久久精品国产亚洲av麻豆长发| av永久免费网站在线观看| 日本激情久久精品人妻热| 在线日韩日本国产亚洲| 麻豆亚洲精品一区二区| 国产精品亚洲av三区色|