易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中用双缓冲技术消除闪烁


在Java编写具有连贯变化的窗口程序时,通常的办法是在子类中覆盖父类的paint(Graphics)方法,在方法中使用GUI函数实现窗口重绘的过程。连贯变换的窗口会不断地调用update(Graphics)函数,该函数自动的调用paint(Graphics)函数。这样就会出现闪烁的情况。
为了解决这一问题,可以应用双缓冲技术。可以通过截取上述过程,覆盖update(Graphics)函数,在内存中创建一个与窗口大小相同的图形,并获得该图形的图形上下文(Graphics),再将图片的图形上下文作为参数调用paint(Graphics)函数(paint(Graphics)中的GUI函数会在图片上画图),再在update(Graphics)函数调用drawImage函数将创建的图形直接画在窗口上。
 
 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); //将图形缓冲区绘制到屏幕上
}
public void paint(Graphics g){ //在paint方法中实现绘图过程
g.drawLine(0, 0, 100, 100);
}
 
 
 
 
因为大部分绘图过程是在内存中进行,所以有效地消除了闪烁。这应用了“以空间换取时间”和“功能分块”的思想


相关文档:

java环境变量配置

下载一个JDK的安装包,我下载的是jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,大家可以去网上搜索,也可以去官方
下载。
下载后,点击exe文件,一直下一步的安装,遇到需要选择安装目录的,可以默认,也可以自己指定(例如指定安装在D:\Program Files\Java)
安装过程有两次选择路径的,一次是对jdk1.6.0_10进 ......

java 运算符

  在算术运算符部分,需要特别注意的一个语法现象是“晋升”。晋升指低于int的3种数字类型(byte、short和char)进行算术运算后,结果会自动提升成int类型。示例代码如下:
                   byte b1 = 10;
& ......

FLASH安全沙箱服务器端程序代码(跨平台,C++/JAVA)

Main.cpp  (Win/*nix)
#include "FlexSecurityBox.h"
int main(int argc, char ** argv) {

char * address;
short port;
if (argc == 2)
{
address = "0.0.0.0";
port = atoi(argv[1]);
} else if (argc == 3)
{
address = argv[1];
port = atoi(argv[2]);
} else
{
printf("Y ......

插入排序算法的JAVA实现

package Utils.Sort;
/**
*插入排序,要求待排序的数组必须实现Comparable接口
*/
public class InsertSort implements SortStrategy
{
       /**
       *利用插入排序算法对obj进行排序
       */
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号