java双缓冲技术是为了解决Java在游戏编程的过程中由于页面刷新频率太快,而引起的页面闪烁问题。
Android中的SurfaceView类就是双缓冲机制。因此,开发游戏时尽量使用SurfaceView而不要使用View,这样的话效率较高,而且SurfaceView的功能也更加完善。为了更容易的了解双缓冲技术,下面介绍用View实现双缓冲的方法。
先概述一下,双缓冲的核心技术就是先通过setBitmap方法将要绘制的所有的图形绘制到一个Bitmap上也就是先在内存空间完成,然后再来调用drawBitmap方法绘制出这个Bitmap,显示在屏幕上。具体的实现代码如下:
View类代码:
public class GameView extends View implements Runnable
{
/* 声明Bitmap对象 */
Bitmap mBitQQ = null;
Paint mPaint = null;
/* 创建一个缓冲区 */
Bitmap mSCBitmap = null;
/* 创建Canvas对象 */
Canvas mCanvas = null;
public GameView(Context context)
{
super(context);
/* 装载资源 */
mBitQQ = ((BitmapDrawable) getResources().getDrawable(R.drawable.qq)).getBitmap();
/* 创建屏幕大小的缓冲区 */
mSCBitmap=Bitmap.createBitmap(320, 480, Config.ARGB_8888);
/* 创建Canvas */
mCanvas = new Canvas();
/* 设置将内容绘制在mSCBitmap上 */
mCanvas.setBitmap(mSCBitmap);
mPaint = new Paint();
/* 将mBitQQ绘制到mSCBitmap上 */
mCanvas.drawBitmap(mBitQQ, 0, 0, mPaint);
/* 开启线程 */
new Thread(this).start();
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
/* 将mSCBitmap显示到屏幕上 */
canvas.drawBitmap(mSCBitmap, 0, 0, mPaint);
}
// 触笔事件
public boolean onTouchEvent(MotionEvent event)
{
return true;
}
// 按键按下事件
public boolean onKeyDown(int keyCode, KeyEvent event)
{
return true;
}
// 按键弹起事件
public boolean onKeyUp(int keyCode, KeyEvent event)
{
return false;
}
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
{
return true;
}
/**
* 线程处理
*/
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
//使用postInvalidate可以直接在线程中更新界面
postInvalidate();
}
}
}
分享到:
相关推荐
双缓冲技术.rar 包含代码+文档+各种资料 我自己整理的 双缓冲技术.rar 包含代码+文档+各种资料 我自己整理的 双缓冲技术.rar 包含代码+文档+各种资料 我自己整理的 双缓冲技术.rar 包含代码+文档+各种资料 我自己...
本文档主要讲述的是Java双缓冲技术;Java的强大特性让其在游戏编程和多媒体动画处理方面也毫不逊色。在Java游戏编程和动画编程中最常见的就是对于屏幕闪烁的处理。本文从J2SE的一个再现了屏幕闪烁的Java ...
vc 双缓冲技术
C#WinForm利用GDI+的双缓冲技术来提高绘图效率.pdf
VC++ 双缓冲技术解决刷新闪烁的源代码实例 VC++利用双缓冲技术解决刷新闪烁问题的源代码实例,经常从事VC编程的朋友可能知道,如果窗体的内容刷新次数过快,会导致屏幕或窗口闪烁问题,如何解决这个难题呢?那就看...
Java双缓冲技术Java双缓冲技术Java双缓冲技术Java双缓冲技术
VC++利用双缓冲技术解决刷新闪烁问题的源代码实例,解决窗体的内容刷新次数过快,会导致屏幕或窗口闪烁问题。
C# GDI双缓冲技术应用文档说明及源代码
VC关于双缓冲绘图的实现.doc vc双缓冲VC++双缓冲实现方法.pdf 实例解说双缓冲.rar 我认为非常好的双缓冲技术实例,,,,,
为防止高速刷新造成的屏幕闪烁问题,可以使用双缓冲技术。本文介绍了为使用双缓冲需要添加的代码,可以直接使用。
c#双缓冲技术,用于解决画图闪烁问题,很好的
绘图 双缓冲技术 C#
双缓冲技术教程加源码,解决重绘闪屏现象,听起来很深澳,学会了就简单
11 双缓冲技术.ppt,11 双缓冲技术.ppt,11 双缓冲技术.ppt,11 双缓冲技术.ppt,11 双缓冲技术.ppt
而采用双缓冲技术则可以很好的解决这一问题。 本文主要分析了双缓冲技术的原理,介绍了其和传统图形 刷新技术的不同之处,并给出了在 VC 中使用双缓冲技术进行绘图的程序框架,对同类研究有一定的参考作用
双缓冲:解决的是多层刷新,一个简单的文件头,解决。
双缓冲技术原理以及优缺点
双缓冲技术解决刷新闪烁 通过实例说明高频率刷新图片实现图片不闪烁。
在对话框上建立picture控件,并利用双缓冲技术在控件所在区域画图。
关于在VC++中适用双缓冲技术进行绘图的文章,适合于VC的初学之