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();
}
}
}
分享到:
相关推荐
C# WinForm 利用 GDI+ 的双缓冲技术来提高绘图效率 在 .NET 时代,Windows 的绘图技术从 GDI 升级到了 GDI+,GDI+ 提供了一套统一的绘图编程模型,极大的提高了 Windows 绘图编程的方便性。然而,在实际开发中,...
双缓冲技术在VC++编程中是一种优化图形更新和防止屏幕闪烁的重要策略。它主要用于GUI(图形用户界面)应用程序,尤其是在涉及到频繁的图形绘制和窗口重绘时。在没有双缓冲的情况下,每次图形更新都可能在屏幕上产生...
双缓冲技术.rar 包含代码+文档+各种资料 我自己整理的 双缓冲技术.rar 包含代码+文档+各种资料 我自己整理的 双缓冲技术.rar 包含代码+文档+各种资料 我自己整理的 双缓冲技术.rar 包含代码+文档+各种资料 我自己...
【Java 双缓冲技术】 Java 作为一种强大的开发语言,在游戏编程和多媒体动画处理领域具有显著的优势。然而,当涉及到动态图形显示时,一个常见的问题是屏幕闪烁。本文将深入探讨这个问题,以及如何通过双缓冲技术来...
VC++ 双缓冲技术解决刷新闪烁的源代码实例 VC++利用双缓冲技术解决刷新闪烁问题的源代码实例,经常从事VC编程的朋友可能知道,如果窗体的内容刷新次数过快,会导致屏幕或窗口闪烁问题,如何解决这个难题呢?那就看...
在计算机图形学和软件开发中,特别是在Windows编程中,"双缓冲技术"是一个重要的概念,用于优化用户界面的更新和防止闪烁。这个技术主要应用于GUI(图形用户界面)应用程序,尤其是那些需要频繁更新画布或者窗口内容...
### 基于VC的高效绘图——双缓冲技术 #### 一、引言 随着计算机技术的发展,图形用户界面(GUI)已成为现代软件不可或缺的一部分。对于开发者而言,设计出美观且高效的图形界面至关重要。然而,在开发过程中,尤其...
### 双缓冲技术原理以及优缺点 #### 一、双缓冲技术原理 双缓冲技术是一种在计算机图形学中广泛使用的渲染方法,它通过在后台(非显示)内存中完成图像的绘制工作,然后一次性将完整的图像复制到前台显示区域,...
C#双缓冲技术是一种用于图形界面编程中减少或消除绘制过程中出现闪烁现象的技术。在处理图形绘制时,特别是在绘图区域频繁更新或绘制复杂图形时,绘制操作往往会导致用户界面出现闪烁。这种闪烁是由于在绘图过程中,...
C#绘图双缓冲技术总结 双缓冲技术是C#绘图中的一种常用技术,用于解决绘图窗口闪烁问题。.NET Framework 1.1 和 .NET 2.0 中的双缓冲技术有所不同。在 .NET 1.1 中,使用 `this.SetStyle(ControlStyles....
双缓冲技术是图形编程中的一种优化策略,尤其在VC++环境下,它被广泛应用于窗口系统中的动态绘图,以避免屏幕闪烁和不连续更新的问题。本文将深入探讨双缓冲技术的概念、工作原理以及在VC++中的实现方法。 双缓冲...
双缓冲技术是计算机图形学中一种优化显示更新的技术,尤其在游戏开发和用户界面设计中广泛应用。它旨在解决屏幕闪烁和图像撕裂问题,提供更流畅的视觉体验。本教程结合源码,将深入讲解双缓冲的工作原理及其应用。 ...
双缓冲技术是GDI中一个重要的优化手段,主要解决在窗口重绘时出现的闪烁问题。本篇文章将深入探讨C#中如何利用GDI实现双缓冲技术,并通过源代码实例进行讲解。 双缓冲技术的核心思想是在内存中创建一个临时的缓冲区...
Java双缓冲技术 Java双缓冲技术是计算机动画处理中的传统技术,广泛应用于Java游戏编程和多媒体动画处理中。该技术的主要作用是消除屏幕闪烁,以提高动画的流畅度和用户体验。 Java双缓冲技术的原理是将屏幕分为...
双缓冲技术是解决这个问题的一种有效方法。 双缓冲技术,简单来说,就是为了解决在连续快速绘制时画面闪烁的问题。在ListView中应用双缓冲,主要是为了提高滚动时的流畅性。通常,我们会创建两个缓冲区:一个用于...
双缓冲技术是计算机图形学和GUI编程中一种重要的优化手段,主要目的是解决界面元素在更新时出现的闪烁问题。在日常使用计算机时,比如浏览网页、玩图形化游戏或者观看视频,我们可能会注意到屏幕上的某些内容在快速...
### 在Visual C++中应用双缓冲技术进行绘图 #### 双缓冲技术概述 双缓冲技术是一种用于提高图形用户界面(GUI)响应速度的技术,在视觉效果处理方面具有重要作用。尤其在Visual C++环境下,利用双缓冲可以显著减少...
Java双缓冲技术是一种提高图形界面性能的策略,尤其在绘制复杂的UI组件时,能有效避免闪烁现象,提供平滑的视觉体验。双缓冲的核心思想是将屏幕上的绘图操作先在一个临时缓冲区进行,待全部操作完成后再一次性将缓冲...
为了解决这个问题,我们可以采用双缓冲技术。本文将深入探讨MFC绘图双缓冲技术的工作原理和实现方法。 双缓冲技术的基本思想是,在内存中创建一个与屏幕大小相同的位图,用于临时存储所有的绘图操作。当所有的绘图...
在这个特定的情境中,我们讨论的是如何在对话框上利用双缓冲技术进行图形绘制。 双缓冲技术是解决GUI(图形用户界面)程序中闪烁问题的一种有效方法。在没有使用双缓冲时,当我们在窗口或控件上直接画图时,由于...