关于Java的一些图形awt介绍
发布日期:2021-06-29 11:11:11
浏览次数:4
分类:技术文章
本文共 3334 字,大约阅读时间需要 11 分钟。
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(); } } } }}
转载地址:https://blog.csdn.net/zw1996/article/details/52971700 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月15日 02时38分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Django实战----页面静态化
2019-04-29
Django实战---商城购物车的增删改、显示和合并购物车
2019-04-29
Django项目实战----订单页面的显示和生成订单、提交订单的逻辑
2019-04-29
Django项目实战----生成订单时高并发问题使用乐观锁
2019-04-29
Django项目实战----添加支付宝支付
2019-04-29
DRF框架---前言(简单使用)
2019-04-29
字符串外面是b“ “的转换 -亲测有效
2019-04-29
单通道和多通道卷积
2019-04-29
npy文件和pkl文件的保存和读取
2019-04-29
lmdb文件的读取和保存
2019-04-29
cv2和二进制互转
2019-04-29
二分查找及原理
2019-04-29
torch Missing key(s) in state_dict
2019-04-29
PA,MIOU,FWIOU
2019-04-29
数组-769. 最多能完成排序的块
2019-04-29
超过256的像素值的保存
2019-04-29
middle-判断二分图-深度优先和广度优先
2019-04-29
二进制补码和原码的记录
2019-04-29
无重叠区间+用最少数量的箭引爆气球
2019-04-29
买卖股票的最佳时机
2019-04-29