
正文
java动态图片源代码 java动态图片界面代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中在窗体的创建一个面板中加入一个gif动态图
java动态图片源代码你是说 JPanel 吗java动态图片源代码?两种方法:
添加 JLabeljava动态图片源代码,给 JLabel 添加 ImageIcon,然后放置 JLabel 到 JPanel 上就行java动态图片源代码了:
JPanel pnl = new JPanel();
......
JLabel lblImage = new JLabel(new ImageIcon("你的文件名")); //创建一个带图片的 JLabel
lblImage.setBounds(0, 0, pnl.getWidth(), pnl.getHeight()); //设置 图片的横坐标、纵坐标、宽、高
pnl.add(lblImage); //放置这个 JLabel 到你的 JPanel 上面
还有一种方法是重写 JPanel 的 paint() 方法:
class YourPanel extends JPanel {
private Image img = Toolkit.getDefaultToolkit().createImage("你的文件名"); //用 Toolkit 的 createImage 方法来创建一个 Image 对象
@Override public void paint (Graphics g) {
super.paint(g);
g.drawImage(img, 0, 0, getWidth(), getHeight()); //绘制图片,第一个参数是 Image 对象,第二个参数是 横坐标,第三个是 纵坐标,第四个是 宽,第五个是 高
}
}
以上你隐式重写也可以:
JPanel pnl = new JPanel() {
@Override public void paint (Graphics g) {
...... //但是要注意这样如果你把 Image 声明成java动态图片源代码了局部变量或者参数形式,你需要声明成 final
}
}
相关问答
Q1: 流动图片怎么做!!!!!
/*你说是不是可以动的图片吗?
我自己做了一个飞机大战的游戏,背景是流动的!我给你源代码!你改改那图的路径好了!
由于我是从我那些代码里面复制的,所以有点乱,其基本思想是:用线程不停地移动图片的位置!其线程的类是:ThreadMove
*/
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class MovePic extends Frame{
private int skyWidth, skyHeight;
private Image image;
private int x, y, planeW, planeH;
private BackImage backImage;
MovePic(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension d = toolkit.getScreenSize();
skyWidth = d.width / 2 - 100;
skyHeight = d.height - 50;
planeW = 50;
planeH = 50;
x = skyWidth / 2 - planeW / 2;
y = skyHeight - planeH;
backImage=new BackImage(-1000+this.skyHeight,this);
this.setBounds(d.width / 2 - skyWidth / 2, 0, skyWidth, skyHeight);
this.setTitle("无名");
this.setBackground(Color.black);
this.setResizable(false);
this.setVisible(true);
this.repaint();
}
public void paint(Graphics g){
backImage.draw(g);
}
public BackImage getBackImage() {
return backImage;
}
public int getSkyWidth() {
return skyWidth;
}
public static void main(String[] args){
MovePic planeSky=new MovePic();
new ThreadMove(planeSky);
}
}
class ThreadMove extends Thread{
MovePic planeSky;
ThreadMove(MovePic planeSky){
this.planeSky=planeSky;
start();
}
public void run(){
try {
while(true){
Thread.sleep(100);
planeSky.getBackImage().move();
planeSky.repaint();
}
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class BackImage {
private int y;
private Image image;
private MovePic planeSky;
private int ySpeed;
BackImage(int y,MovePic planeSky){
this.y=y;
this.planeSky=planeSky;
this.ySpeed=10;
try {
//******************要修改的地址***********************//
image=ImageIO.read(new File("C:\\java\\PlaneWar0.1\\image\\q\\sky3.gif"));
} catch (IOException e1) {
e1.printStackTrace();
}
}
public void move(){
y=y+ySpeed;
this.setY(y);
}
public void draw(Graphics g){
g.drawImage(image, 0, y, planeSky.getSkyWidth(), 1000, null);
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
Q2: 安卓中如何添加显示gif动态图片?
大家都知道,Android开发模拟器为了节省内存,一般不支持直接显示gif图片,即使你强制设置了,也只会显示图片的第一帧。看到网上也有许多的方法,来实现此功能,可都比较的繁琐,需要修改android源代码来实现或者用gif解析器来实现。在此文章中,这里教大家一种比较简洁的一个方法,你可以把这个类当做是一种工具类。用的时候,直接搬到程序里面,更改下图片的资源,就可以非常轻松的显示gif图片了。
步骤1:看一下这个工具类的实例代码:MyGifView.java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.util.AttributeSet;
import android.view.View;
public class MyGifView extends View{
private long movieStart;
private Movie movie;
//此处必须重写该构造方法
public MyGifView(Context context,AttributeSet attributeSet) {
super(context,attributeSet);
//以文件流(InputStream)读取进gif图片资源
movie=Movie.decodeStream(getResources().openRawResource(R.drawable.keyboard));
}
@Override
protected void onDraw(Canvas canvas) {
long curTime=android.os.SystemClock.uptimeMillis();
//第一次播放
if (movieStart == 0) {
movieStart = curTime;
}
if (movie != null) {
int duraction = movie.duration();
int relTime = (int) ((curTime-movieStart)%duraction);
movie.setTime(relTime);
movie.draw(canvas, 0, 0);
//强制重绘
invalidate();
}
super.onDraw(canvas);
}
}
此工具类中,只做了2件事情。1,构造方法;2,重写了onDraw()方法。大家以后用的话,只需拷贝此类到你的工程下即可起作用。
步骤2:布局文件代码 activity_main.xml
LinearLayout xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
TextView
android:text="====Gif图片测试布局===="
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/
com.example.showgifimage.MyGifView
android:id="@+id/iv"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_margin="20dp"
/
/LinearLayout
布局文件中,注意的是:标签的设置 com.example.showgifimage.MyGifView/.
格式:包名+.类名
步骤3:主activity中调用
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
就这么轻松的把Gif图片显示了~~
Q3: java实现游戏背景图片的动态移动,我想用java做一个小霸王中冒险岛这样的游戏,背景移动怎么实现?
// 想实现你的方法,用画图是最快的,即在一个组件上直接画上你的背景图
// 建议你看看swing 画图这方面的书籍
// 其它我就不写
class My extends JComponent {
// 记住这个方法不要直接调用,如果想让界面更新,请用repaint();交由UI线程来完成
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
BufferedImage image = null;
try {
image = ImageIO.read(new FileInputStream(""));
} catch (Exception e) {
}
// 这里是图片从100,200处开始画
g.drawImage(image, -100, -200, null);
}
}
Q4: 求一个Java语言编写的gif动态验证码 就是百度注册用户的那种
你好,
Servlet类:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/gif");//设置相应类型,告诉浏览器输出的内容为图片
response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);
RandomValidateCode randomValidateCode = new RandomValidateCode();
try {
randomValidateCode.getRandcode(request, response);//输出图片方法
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
生成图片的类:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class RandomValidateCode {
public static final String RANDOMCODEKEY = "RANDOMVALIDATECODEKEY";//放到session中的key
private Random random = new Random();
private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//随机产生的字符串
private int width = 80;//图片宽
private int height = 26;//图片高
private int lineSize = 25;//干扰线数量
private int stringNum = 4;//随机产生字符数量
/**
* 生成随机图片
*/
public void getRandcode(HttpServletRequest request,
HttpServletResponse response) {
HttpSession session = request.getSession();
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics g = image.getGraphics();
g.fillRect(0, 0, width, height);
g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18));
g.setColor(getRandColor(180, 233));
//绘制干扰线
for(int i=0;i=lineSize;i++){
drowLine(g);
}
//绘制随机字符
String randomString = "";
for(int i=1;i=stringNum;i++){
randomString=drowString(g,randomString,i);
}
session.removeAttribute(RANDOMCODEKEY);
session.setAttribute(RANDOMCODEKEY, randomString);
g.dispose();
try {
ImageIO.write(image, "JPEG", response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
// ------------- private methods -------------
/*
* 获得字体
*/
private Font getFont(){
return new Font("Fixedsys",Font.CENTER_BASELINE,18);
}
/*
* 获得颜色
*/
private Color getRandColor(int fc,int bc){
if(fc 255)
fc = 255;
if(bc 255)
bc = 255;
int r = fc + random.nextInt(bc-fc-16);
int g = fc + random.nextInt(bc-fc-14);
int b = fc + random.nextInt(bc-fc-18);
return new Color(r,g,b);
}
/*
* 绘制字符串
*/
private String drowString(Graphics g,String randomString,int i){
g.setFont(getFont());
g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));
String rand = String.valueOf(getRandomString(random.nextInt(randString.length())));
randomString +=rand;
g.translate(random.nextInt(3), random.nextInt(3));
g.drawString(rand, 13*i, 16);
return randomString;
}
/*
* 绘制干扰线
*/
private void drowLine(Graphics g){
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(13);
int yl = random.nextInt(15);
g.drawLine(x, y, x+xl, y+yl);
}
/*
* 获取随机的字符
*/
private String getRandomString(int num){
return String.valueOf(randString.charAt(num));
}
}
Q5: java 如何生成动态的gif图片
实现思路:无论是何种类型,都是转换为流的形式进行的文件传输和存储。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定义一个流
try {
String file = "D:/test/test.GIF";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/New.GIF”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.GIF”实例
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
pw.write(str);//将要写入文件的内容,可以多次write
};
bre.close();
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
关于java动态图片源代码和java动态图片界面代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







