Java Swing使用双缓冲技术(两种)

Java Swing使用双缓冲技术(两种)

开发工具与关键技术:java、 elipse2019、jdk1.8 
作者:Amewin	
撰写时间:2019年8月7日

Swing编程简介:

         介绍当使用Swing 进行图形绘制时,只是单独绘制一个静图片时,只需要考虑图片的美化程度,让图形尽量保持圆润就可以满足我们的基本需求。但是更多时候,我们处理的是一些关于数据可视化的动图效果

        会遇到图片闪烁,远远达不到我们的观感体验,可以使用双缓存技术解决,其实双缓存也是计算机图形学,最基础的课题之一。

下面我以简单的动图,展示一下产生其图片产生闪烁的原理。
优点:

1、Swing组建不再依赖本地平台GUI无需采用各种平台的GUI交集,因此Swing提供大量图形界面组件

2、Swing组建不再依赖本地GUI不会产生平台相关bug

3、Swing组件在各种平台上运行可以保证具有相同的图形界面外观

4、Swing采用MVC(model-view-controller,模型-视图-控制器)设计模式,模型用于维护组件的状态,视图是组件的可视化表现,控制器用于控制各个事件,组件做出怎么样的响应。模型发生改变,它通知所有依赖它的视图,视图根据模型数据来更新自己。
在这里插入图片描述                                            在这里插入图片描述

必须对画布进行清空 ,可问题来了只有一张画布,清除之后再进行绘画 ,屏幕就会出现一闪的效果。

在这里插入图片描述

而双缓存却有两张画布,就像让人走独木桥,双脚交替前行,始终保持平稳的速度。双缓存也是交替切换图片前行,因此他只需要变换切换好已经处理好后的图片地址,而不需要在画布展示绘制的过程。
使得人观感更加自由,柔和。

下面简要的代码,启动Swing 中双缓存功能

import java.awt.*;
import javax.swing.*;
import java.awt.geom.Ellipse2D;

public class AlgoFrame extends JFrame{

   //画板
private class AlgoCanvas extends JPanel{

//启用双缓存--进行页面的基本优化·
public  AlgoCanvas(){super(true); }

}

}
//而第二种:
//则较为复杂一些
//双缓存工具类
	public void update(Graphics g) {
	    if(offScreenImage == null)
	   		 //这是游戏窗口的宽度和高度
	        offScreenImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);

	     
	    Graphics gOff = offScreenImage.getGraphics();
	    paint(gOff);
	    g.drawImage(offScreenImage, 0, 0, null);
	}


示例

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值