「java图片变动漫」怎么图片变动漫

博主:adminadmin 2022-12-14 13:00:08 67

本篇文章给大家谈谈java图片变动漫,以及怎么图片变动漫对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么用java做动画

重写paint方法,来实现将自己定义的图片绘制到组件中,然后启动一个线程来控制paint方法。 示例: ××××××××××××××××××××××××××× import javax.swing.*; import java.awt.*;class MyPanel extends JPanel implements Runnable {private Image img;private int i=0;private int j=0;public MyPanel(){img=new ImageIcon("1.png").getImage();}public void paint(Graphics g){g.drawImage(img,0,0,60,104,i*60,j*104,i*60+60,j*104+104,this);}public void run(){while(true){while(j {while(i {try{Thread.sleep(300);}catch(Exception e){}this.repaint();i++;}j++;i=0;}i=0;j=0;}} }public class test extends JFrame {private MyPanel p;public test(){p=new MyPanel();this.add(p,BorderLayout.CENTER);this.setBounds(300,200,300,300);this.setTitle("人物行走图");new Thread(p).start();this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String args[]){new test();} }××××××××××××××××××××××× 将以上源码保存为:test.java,编译,然后下载下面的图片 将下载的图片改名为1.png" target="_blank"

,然后将其和编译后生成的class文件放在同一文件夹下,然后运行就可以了·~~

2.Java有哪几种常见的实现动画的方法?

一: 用多线程播放一组图片, 实现动画片的效果; 类似于逐帧动画,每个图片是动画的一帧

二: 在awt/swing界面里, 可以使用paint方法,去绘制图形,然后用swing提供的Timer或者多线程技术,去刷新绘制的图形

三:在JavaFX里, 本身就支持动画,并且封装了很多动画效果可以直接使用,比如逐帧动画.缩放动画,渐变动画,旋转动画,位置动画等.

强烈推荐使用javaFX来实现动画, 因为javaFX是现代化的图形界面工具,具有简单,强大,组件丰富,跨平台,支持Html5, 支持表格, 支持动画等多种优势 

下面是一个javaFX绘制的动态表格

javaFX动态表格

java Swing怎么设置JPanel背景图片为gif动画??????背景加gif动画只能静态显

public class GifComponent extends JComponent {

private static final long serialVersionUID = 1L;

private GifBean[] gifBeans;

private MapInteger, Integer[] gifBeanMap = new HashMapInteger, Integer[]();

private int index = 0;

private int delayFactor;

private Timer timer;

/**

*

* @param gifFile

* @param delayFactor

* 显示gif每帧图片的时间因子

*/

public GifComponent(File gifFile, int delayFactor) {

setDelayFactor(delayFactor);

setGifFile(gifFile);

}

/**

* 设置Gif文件

*

* @param gifFile

*/

public void setGifFile(File gifFile) {

ImageReader reader = null;

try {

ImageInputStream imageIn = ImageIO.createImageInputStream(gifFile);

IteratorImageReader iter = ImageIO

.getImageReadersByFormatName("gif");

if (iter.hasNext()) {

reader = iter.next();

}

reader.setInput(imageIn, false);

gifBeanMap.clear();

gifBeans = new GifBean[reader.getNumImages(true)];

GIFImageMetadata meta = null;

for (int i = 0; i gifBeans.length; i++) {

meta = (GIFImageMetadata) reader.getImageMetadata(i);

gifBeans[i] = new GifBean();

gifBeans[i].image = reader.read(i);

gifBeans[i].x = meta.imageLeftPosition;

gifBeans[i].y = meta.imageTopPosition;

gifBeans[i].width = meta.imageWidth;

gifBeans[i].height = meta.imageHeight;

gifBeans[i].disposalMethod = meta.disposalMethod;

gifBeans[i].delayTime = meta.delayTime == 0 ? 1

: meta.delayTime;

}

for (int i = 1; i gifBeans.length; i++) {

if (gifBeans[i].disposalMethod == 2) {

gifBeanMap.put(new Integer(i), new Integer[] { i });

continue;

}

int firstIndex = getFirstIndex(i);

ListInteger list = new ArrayListInteger();

for (int j = firstIndex; j = i; j++) {

list.add(j);

}

gifBeanMap.put(new Integer(i), list.toArray(new Integer[] {}));

}

} catch (IOException e) {

e.printStackTrace();

}

setTimer();

}

private synchronized void setTimer() {

if (timer != null) {

timer.cancel();

}

timer = new Timer("show gif");

timer.schedule(new TimerTask() {

@Override

public void run() {

repaint();

try {

Thread.sleep(gifBeans[index].delayTime * delayFactor);

} catch (InterruptedException e) {

}

index++;

if (index = gifBeans.length) {

index = 0;

}

}

}, 0, 1);

}

/**

* 设置时间因子

*

* @param delayFactor

*/

public void setDelayFactor(int delayFactor) {

this.delayFactor = delayFactor;

}

@Override

protected void paintComponent(Graphics g) {

g.drawImage(gifBeans[0].image, gifBeans[0].x, gifBeans[0].y, this);

if (index 0) {

Integer[] array = gifBeanMap.get(index);

for (Integer i : array) {

g.drawImage(gifBeans[i].image, gifBeans[i].x, gifBeans[i].y,

this);

}

}

}

private int getFirstIndex(int index) {

int tempIndex = index;

while (tempIndex 1) {

if (tempIndex - 1 0

gifBeans[tempIndex - 1].disposalMethod == 2) {

return index;

}

tempIndex--;

}

return tempIndex;

}

/**

* 用于保持gif每帧图片的信息

*/

public class GifBean {

public BufferedImage image;

public int x;

public int y;

public int width;

public int height;

public int disposalMethod;

public int delayTime;

}

}

JAVA 将照片转视频且有动画效果

感觉这应该是前端页面的功能吧,不是后端做的事情。是让照片以幻灯片的方式呈现,这是纯页面效果,后台只负责推送数据,怎么展现是前端的活了吧。

求java做动画代码

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.EventQueue;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

public class TestImage extends Frame

{

private static final long serialVersionUID = 1L;

private static boolean PRESSED = false;

private static int pointX = 0;

private static int pointy = 200;

private static int RIGHT_GO = 0;

private static int LEFT_GO = 0;

private static int DIR = 0;

private static int ANGLE = 0;

private static int W = 50;

private static int H = 60;

private _Canvas canvas = null;

public TestImage ()

{

add (canvas = new _Canvas ());

setIgnoreRepaint (true);

requestFocus ();

}

public class _Canvas extends Canvas implements Runnable

{

private static final long serialVersionUID = 1L;

private BufferedImage bi = null;

private Image bufferedImage = null;

private Thread thread = null;

private long sleepTime = 10;

public _Canvas ()

{

try

{

bi = ImageIO.read (new File ("go.png"));

}

catch (IOException e)

{}

setBackground (Color.BLACK);

requestFocus ();

addKeyListener (new KeyListener ()

{

@Override

public void keyTyped ( KeyEvent e )

{}

@Override

public void keyReleased ( KeyEvent e )

{

RIGHT_GO = 0;

PRESSED = false;

}

@Override

public void keyPressed ( KeyEvent e )

{

// 38 40 37 39上下左右

DIR = e.getKeyCode ();

PRESSED = true;

}

});

}

@Override

public void paint ( Graphics g )

{

Graphics2D g2d = (Graphics2D) g;

g2d.setRenderingHint (RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

g2d.drawImage (rotateImage (bi.getSubimage (RIGHT_GO, LEFT_GO, W, H), ANGLE, true), pointX, pointy, W, H,

this);

g2d.dispose ();

}

@Override

public void update ( Graphics g )

{

if (null == bufferedImage)

{

bufferedImage = createImage (getWidth (), getHeight ());

}

Graphics bufferedG = bufferedImage.getGraphics ();

bufferedG.clearRect (0, 0, getWidth (), getHeight ());

paint (bufferedG);

bufferedG.dispose ();

g.drawImage (bufferedImage, 0, 0, this);

g.dispose ();

}

public void start ()

{

thread = new Thread (this);

thread.setName ("TestImage");

thread.setPriority (Thread.MIN_PRIORITY);

thread.start ();

}

public synchronized void stop ()

{

thread = null;

notify ();

}

@Override

public void run ()

{

Thread me = Thread.currentThread ();

while (thread == me  !isShowing () || getSize ().width == 0)

{

try

{

Thread.sleep (555);

}

catch (InterruptedException e)

{

return;

}

}

while (thread == me  isShowing ())

{

if (PRESSED)

{

try

{

if (DIR == 39)

{

RIGHT_GO = RIGHT_GO + 50;

LEFT_GO = 0;

pointX = pointX + 1;

if (pointX  420)

{

ANGLE = 90;

pointX--;

pointy--;

W = 60;

H = 50;

}

if (RIGHT_GO  50)

{

RIGHT_GO = 0;

}

}

else if (DIR == 37)

{

pointX = pointX - 1;

RIGHT_GO = RIGHT_GO + 50;

LEFT_GO = 60;

if (pointX  0)

{

ANGLE = -90;

pointX++;

pointy--;

W = 60;

H = 50;

}

if (RIGHT_GO  50)

{

RIGHT_GO = 0;

}

}

else if (DIR == 38)

{

W = 50;

H = 60;

pointy = 150;

ANGLE = 0;

RIGHT_GO = 100;

}

else if (DIR == 40)

{

W = 50;

H = 60;

ANGLE = 0;

pointy = 200;

RIGHT_GO = 0;

}

Thread.sleep (sleepTime);

repaint ();

}

catch (InterruptedException e)

{

break;

}

}

else

{

RIGHT_GO = RIGHT_GO + 50;

LEFT_GO = 0;

pointX = pointX + 1;

if (RIGHT_GO  50)

{

RIGHT_GO = 0;

}

if (pointX  500)

{

pointX = 0;

}

try

{

Thread.sleep (sleepTime);

repaint ();

}

catch (InterruptedException e)

{

break;

}

}

}

thread = null;

}

}

/**

 * 旋转图像为指定角度

 * 

 * @param degree

 * @return

 */

public static BufferedImage rotateImage ( final BufferedImage image, final int angdeg, final boolean d )

{

int w = image.getWidth ();

int h = image.getHeight ();

int type = image.getColorModel ().getTransparency ();

BufferedImage img;

Graphics2D graphics2d;

( graphics2d = ( img = new BufferedImage (w, h, type) ).createGraphics () ).setRenderingHint (

RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

graphics2d.rotate (d ? -Math.toRadians (angdeg) : Math.toRadians (angdeg), w / 2, h / 2);

graphics2d.drawImage (image, 0, 0, null);

graphics2d.dispose ();

return img;

}

public static void main ( String[] args )

{

EventQueue.invokeLater (new Runnable ()

{

@Override

public void run ()

{

final TestImage ti = new TestImage ();

ti.setSize (new Dimension (500, 300));

ti.setLocationRelativeTo (null);

ti.addWindowListener (new WindowAdapter ()

{

@Override

public void windowClosing ( WindowEvent e )

{

System.exit (0);

}

@Override

public void windowDeiconified ( WindowEvent e )

{

ti.canvas.start ();

}

@Override

public void windowIconified ( WindowEvent e )

{

ti.canvas.stop ();

}

});

ti.setResizable (false);

ti.canvas.start ();

ti.setVisible (true);

}

});

}

}

关于java图片变动漫和怎么图片变动漫的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-14,除非注明,否则均为首码项目网原创文章,转载请注明出处。