效果图如下:
Java实现窗体中角色逐渐风化效果

源码:
AirslakeImage.java
Java实现窗体中角色逐渐风化效果packageorg.test;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
importjava.awt.Button;
Java实现窗体中角色逐渐风化效果
importjava.awt.Color;
Java实现窗体中角色逐渐风化效果
importjava.awt.Frame;
Java实现窗体中角色逐渐风化效果
importjava.awt.Graphics;
Java实现窗体中角色逐渐风化效果
importjava.awt.Image;
Java实现窗体中角色逐渐风化效果
importjava.awt.Panel;
Java实现窗体中角色逐渐风化效果
importjava.awt.event.ActionEvent;
Java实现窗体中角色逐渐风化效果
importjava.awt.event.ActionListener;
Java实现窗体中角色逐渐风化效果
importjava.awt.event.WindowAdapter;
Java实现窗体中角色逐渐风化效果
importjava.awt.event.WindowEvent;
Java实现窗体中角色逐渐风化效果
importjava.awt.image.PixelGrabber;
Java实现窗体中角色逐渐风化效果
importjava.util.Random;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
importorg.loon.framework.game.image.Bitmap;
Java实现窗体中角色逐渐风化效果
importorg.loon.framework.game.image.LColor;
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
/***//**
Java实现窗体中角色逐渐风化效果*<p>Title:LoonFramework</p>
Java实现窗体中角色逐渐风化效果*<p>Description:java实现图片风化效果</p>
Java实现窗体中角色逐渐风化效果*<p>Copyright:Copyright(c)2007</p>
Java实现窗体中角色逐渐风化效果*<p>Company:LoonFramework</p>
Java实现窗体中角色逐渐风化效果*
@authorchenpeng
Java实现窗体中角色逐渐风化效果*@email:[email protected]
Java实现窗体中角色逐渐风化效果*
@version0.1
Java实现窗体中角色逐渐风化效果
*/

Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicclassAirslakeImageextendsPanelimplementsRunnable,ActionListener...{
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
/***//**
Java实现窗体中角色逐渐风化效果*
Java实现窗体中角色逐渐风化效果
*/

Java实现窗体中角色逐渐风化效果
privatestaticfinallongserialVersionUID=1L;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
staticfinalpublicint_WIDTH=400;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
staticfinalpublicint_HEIGHT=400;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateboolean_isRun=false;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateImage_img;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateImage_screen;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateGraphics_back;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateint_imgWidth;
Java实现窗体中角色逐渐风化效果
privateint_imgHeight;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateFraction[]_fractions;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateThread_timer;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateButton_meganteButton;
Java实现窗体中角色逐渐风化效果
privateButton_revivalButton;
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
privateRandom_rand=newRandom();
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicAirslakeImage()...{
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果_screen
=newBitmap(_WIDTH,_HEIGHT).getImage();
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果_back
=_screen.getGraphics();
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果setSize(_WIDTH,_HEIGHT);
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果_meganteButton
=newButton("破碎图片");
Java实现窗体中角色逐渐风化效果_meganteButton.addActionListener(
this);
Java实现窗体中角色逐渐风化效果add(_meganteButton);
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果_revivalButton
=newButton("还原图片");
Java实现窗体中角色逐渐风化效果_revivalButton.addActionListener(
this);
Java实现窗体中角色逐渐风化效果add(_revivalButton);
Java实现窗体中角色逐渐风化效果_revivalButton.setEnabled(
false);
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果loadImage(
"role.png");
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果init(_img);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
/***//**
Java实现窗体中角色逐渐风化效果*初始化image图像,分解其中像素
Java实现窗体中角色逐渐风化效果*
@param_img
Java实现窗体中角色逐渐风化效果
*/

Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
privatevoidinit(Image_img)...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
if(_timer!=null)...{
Java实现窗体中角色逐渐风化效果_timer
=null;
Java实现窗体中角色逐渐风化效果_isRun
=false;
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果_fractions
=newFraction[_imgWidth*_imgHeight];
Java实现窗体中角色逐渐风化效果PixelGrabberpg
=newPixelGrabber(_img,0,0,_imgWidth,_imgHeight,true);
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
try...{
Java实现窗体中角色逐渐风化效果pg.grabPixels();
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果}
catch(InterruptedExceptione)...{
Java实现窗体中角色逐渐风化效果e.printStackTrace();
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
intpixel[]=(int[])pg.getPixels();
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
//重新封装像素
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
for(inty=0;y<_imgHeight;y++)...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
for(intx=0;x<_imgWidth;x++)...{
Java实现窗体中角色逐渐风化效果
intn=y*_imgWidth+x;
Java实现窗体中角色逐渐风化效果_fractions[n]
=newFraction();
Java实现窗体中角色逐渐风化效果
doubleangle=_rand.nextInt(360);
Java实现窗体中角色逐渐风化效果
doublespeed=10.0/_rand.nextInt(30);
Java实现窗体中角色逐渐风化效果_fractions[n].x
=x+90;
Java实现窗体中角色逐渐风化效果_fractions[n].y
=y+20;
Java实现窗体中角色逐渐风化效果_fractions[n].vx
=Math.cos(angle*Math.PI/180)*speed;
Java实现窗体中角色逐渐风化效果_fractions[n].vy
=Math.sin(angle*Math.PI/180)*speed;
Java实现窗体中角色逐渐风化效果_fractions[n].color
=pixel[n];
Java实现窗体中角色逐渐风化效果_fractions[n].countToCrush
=x/6+_rand.nextInt(10);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicvoidupdate(Graphicsg)...{
Java实现窗体中角色逐渐风化效果paint(g);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicvoidpaint(Graphicsg)...{
Java实现窗体中角色逐渐风化效果
//变更背景色
Java实现窗体中角色逐渐风化效果
_back.setColor(Color.WHITE);
Java实现窗体中角色逐渐风化效果
//清空背景
Java实现窗体中角色逐渐风化效果
_back.fillRect(0,0,_WIDTH,_HEIGHT);
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
for(intn=0;n<_imgWidth*_imgHeight;n++)...{
Java实现窗体中角色逐渐风化效果
intx=(int)_fractions[n].x;
Java实现窗体中角色逐渐风化效果
inty=(int)_fractions[n].y;
Java实现窗体中角色逐渐风化效果LColorcolor
=LColor.getLColor(_fractions[n].color);
Java实现窗体中角色逐渐风化效果
//纯黑色区域不读取
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
if(!LColor.equals(color,LColor.fromArgb(0,0,0)))...{
Java实现窗体中角色逐渐风化效果
//获得rgb三色
Java实现窗体中角色逐渐风化效果
intred=color.R;
Java实现窗体中角色逐渐风化效果
intgreen=color.G;
Java实现窗体中角色逐渐风化效果
intblue=color.B;
Java实现窗体中角色逐渐风化效果_back.setColor(
newColor(red,green,blue));
Java实现窗体中角色逐渐风化效果
//绘制
Java实现窗体中角色逐渐风化效果
_back.drawLine(x,y,x,y);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果g.drawImage(_screen,
0,0,this);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicvoidactionPerformed(ActionEvente)...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
if(e.getSource()==_meganteButton)...{
Java实现窗体中角色逐渐风化效果execute();
Java实现窗体中角色逐渐风化效果_meganteButton.setEnabled(
false);
Java实现窗体中角色逐渐风化效果_revivalButton.setEnabled(
true);
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果}
elseif(e.getSource()==_revivalButton)...{
Java实现窗体中角色逐渐风化效果init(_img);
Java实现窗体中角色逐渐风化效果repaint();
Java实现窗体中角色逐渐风化效果_meganteButton.setEnabled(
true);
Java实现窗体中角色逐渐风化效果_revivalButton.setEnabled(
false);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
/***//**
Java实现窗体中角色逐渐风化效果*加载图像
Java实现窗体中角色逐渐风化效果*
@paramfilename
Java实现窗体中角色逐渐风化效果
*/

Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
privatevoidloadImage(Stringfilename)...{
Java实现窗体中角色逐渐风化效果Bitmapbitmap
=newBitmap(("./image/"+filename).intern());
Java实现窗体中角色逐渐风化效果
//替换透明区域颜色(象素化后,转为rgb形式的透明区域色值将显示为r=0,g=0,b=0),可以直接用pixel识别透明区域,也可以替换或跳过该区域)
Java实现窗体中角色逐渐风化效果
_img=bitmap.getImage();
Java实现窗体中角色逐渐风化效果_imgWidth
=_img.getWidth(this);
Java实现窗体中角色逐渐风化效果_imgHeight
=_img.getHeight(this);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
/***//**
Java实现窗体中角色逐渐风化效果*执行操作
Java实现窗体中角色逐渐风化效果*
Java实现窗体中角色逐渐风化效果
*/

Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
privatevoidexecute()...{
Java实现窗体中角色逐渐风化效果_timer
=newThread(this);
Java实现窗体中角色逐渐风化效果_timer.start();
Java实现窗体中角色逐渐风化效果_isRun
=true;
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
classFraction...{
Java实现窗体中角色逐渐风化效果
//图片在窗体中x
Java实现窗体中角色逐渐风化效果
publicdoublex;
Java实现窗体中角色逐渐风化效果
//图片在窗体中y
Java实现窗体中角色逐渐风化效果
publicdoubley;
Java实现窗体中角色逐渐风化效果
//显示图x
Java实现窗体中角色逐渐风化效果
publicdoublevx;
Java实现窗体中角色逐渐风化效果
//显示图y
Java实现窗体中角色逐渐风化效果
publicdoublevy;
Java实现窗体中角色逐渐风化效果
//color
Java实现窗体中角色逐渐风化效果
publicintcolor;
Java实现窗体中角色逐渐风化效果
//变形颗粒数量
Java实现窗体中角色逐渐风化效果
publicintcountToCrush;
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicvoidrun()...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
while(_isRun)...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
for(intn=0;n<_imgWidth*_imgHeight;n++)...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
if(_fractions[n].countToCrush<=0)...{
Java实现窗体中角色逐渐风化效果_fractions[n].x
+=_fractions[n].vx;
Java实现窗体中角色逐渐风化效果_fractions[n].y
+=_fractions[n].vy;
Java实现窗体中角色逐渐风化效果_fractions[n].vy
+=0.1;
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果}
else...{
Java实现窗体中角色逐渐风化效果_fractions[n].countToCrush
--;
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
//间隔
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
try...{
Java实现窗体中角色逐渐风化效果Thread.sleep(
60);
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果}
catch(InterruptedExceptione)...{
Java实现窗体中角色逐渐风化效果e.printStackTrace();
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果repaint();
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicstaticvoidmain(String[]args)...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果java.awt.EventQueue.invokeLater(
newRunnable()...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicvoidrun()...{
Java实现窗体中角色逐渐风化效果Framefrm
=newFrame("java实现图片风化效果");
Java实现窗体中角色逐渐风化效果frm.add(
newAirslakeImage());
Java实现窗体中角色逐渐风化效果frm.setResizable(
false);
Java实现窗体中角色逐渐风化效果frm.setSize(_WIDTH,_HEIGHT);
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果frm.addWindowListener(
newWindowAdapter()...{
Java实现窗体中角色逐渐风化效果Java实现窗体中角色逐渐风化效果
publicvoidwindowClosing(WindowEvente)...{
Java实现窗体中角色逐渐风化效果System.exit(
0);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}
);
Java实现窗体中角色逐渐风化效果frm.setLocationRelativeTo(
null);
Java实现窗体中角色逐渐风化效果frm.setVisible(
true);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}
);
Java实现窗体中角色逐渐风化效果}

Java实现窗体中角色逐渐风化效果}

相关文章:

  • 2021-09-16
  • 2022-02-07
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
猜你喜欢
  • 2021-11-26
  • 2021-05-31
  • 2022-03-01
  • 2022-02-28
  • 2022-01-10
相关资源
相似解决方案