「java图片变动漫」怎么图片变动漫
本篇文章给大家谈谈java图片变动漫,以及怎么图片变动漫对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、怎么用java做动画
- 2、2.Java有哪几种常见的实现动画的方法?
- 3、java Swing怎么设置JPanel背景图片为gif动画??????背景加gif动画只能静态显
- 4、JAVA 将照片转视频且有动画效果
- 5、求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图片变动漫和怎么图片变动漫的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-14,除非注明,否则均为
原创文章,转载请注明出处。