您的位置:首页 > 编程语言 > Java开发

关于Java的一些图形awt介绍

2016-11-07 23:26 453 查看
1;我们先介绍怎么创建窗口吧。



2;在窗口进行操作;



注意,在要修改Graphics的颜色的时候,要注意先保存原有颜色,最后还原成原来颜色,确保程序的确定性。

还有这些基本的方法可以查看码了解;



3;在窗口中插入图片;



那个调用的方法

package myFrame;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
/**
* 调用这个方法即可实现加载图片
* @author Administrator
*
*/
public class GamePictureUtil {

private  GamePictureUtil() {

}

public static Image getImages(String path){//返回Image对象
URL u = GamePictureUtil.class.getClassLoader().getResource(path);
BufferedImage img = null;
try {
img = ImageIO.read(u);
} catch (IOException e) {
e.printStackTrace();
}

return img;

}
}


4;怎么实现图片的移动;

这个我们分为两个部分;

4.1;界面的重画;

利用线程来实现重画;



4.2;使图片运动起来;

之前我们drawImage()方法的时候有xy坐标吧,我们当时是固定的值,现在我们只需要把它变成变量,并且来给它增加量,来实现图片按照某种路径进行移动,





5;关于动画图片的双缓冲;

我们在4步骤的时候是不是观察在图片在不断的闪动,此时还需要一个缓冲,双缓冲;

直接将下面代码放到主类中即可;

Image ImageBuffer = null;
Graphics GraImage = null;
public void update(Graphics g){     //覆盖update方法,截取默认的调用过程
ImageBuffer = createImage(this.getWidth(), this.getHeight());   //创建图形缓冲区
GraImage = ImageBuffer.getGraphics();       //获取图形缓冲区的图形 上下文
paint(GraImage);        //用paint方法中编写的绘图过程对图形缓冲区绘图
GraImage.dispose();     //释放图形上下文资源
g.drawImage(ImageBuffer, 0, 0, this);   //将图形缓冲区绘制到屏幕上
}


6;最后还可以进行一下封装,将每个图形界面程序都需要使用的的方法,进行封装成类,封装成一个图形工具包;



package gameUtil;

public class Constant {

public static final int WIGHT = 1000;//窗口的宽度
public static final int HIGTH = 700;//窗口的高度

}


package gameUtil;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
/**
* 调用这个方法即可实现加载图片
* @author Administrator
*
*/
public class GamePictureUtil {

private  GamePictureUtil() {

}

public static Image getImages(String path){//添加一个返回图片的方法
URL u = GamePictureUtil.class.getClassLoader().getResource(path);
BufferedImage img = null;
try {
img = ImageIO.read(u);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return img;

}
}


package gameUtil;

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/*
* 显示窗口;
*/
public class MyFrame extends Frame{

/**
* 显示出现窗口
* 线程实现,动态图片。
*/
public void showFrame(){
setSize(Constant.WIGHT,Constant.HIGTH);//设置窗口大小,以Eclipse的左上角为原点、
setLocation(100, 100);//设置坐标,这里的坐标也是左上角
setVisible(true);//设置窗口可见,默认是不可见的

new PaintThread().start();//启动线程,反复调用paint。

addWindowListener(new WindowAdapter() {//实现窗口关闭内部类
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

/**
* 定义一个重画窗口的内部类(线程实现);了解即可,懂得调用即可。
* @author Administrator
*
*/
class PaintThread extends Thread{//通过线程,内部类

public void run(){
while(true){
try {
repaint();
Thread.sleep(30);//1s等于100s,一秒休息25次;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息