讨论:移动图像时,如何避免图像闪烁?(附代码) 附一gif图片http://www.javaworld.com/javaworld/jw-03-1996/animation/car.gif 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查了些资料,把原代码的b1_mouseClicked(MouseEvent e)改成如下形式(双缓冲)后,效果不错。"双缓冲"技术并不是没听说过,只是理解得不透彻;原以为要让自己在程序里画的图像(不是现成的图片文件)跑起来,只需开避一个此图像大小的缓冲即可,呵呵,这样换成图片了还是闪烁,真让我紧张了一把:)而现在把缓冲的大小定义为等于客户区,结果图像不闪了——仅仅是把缓冲改大了。不知道把缓冲定义得比要移动的图像大但比客户区要小又会怎么样,各位有空帮忙试一把。 void b1_mouseClicked(MouseEvent e) { Image bufferImg = this.createImage(300, 400);//300、400分别为Frame宽、高 Graphics bufferG = bufferImg.getGraphics(); Graphics g = this.getGraphics(); int y = 100; int x = 0; int w = bufferImg.getWidth(this); int h = bufferImg.getHeight(this); for(;x < 300;) { x = x + 1; bufferG.clearRect(0, 0, w, h); bufferG.drawImage(img, x, y, null); g.drawImage(bufferImg, 0, 0, null); try { Thread.currentThread().sleep(10); } catch(Exception ex) {} } }欢迎讨论、欢迎蹭分!! 获取 数码照片的 拍照日期? rmi是如何生成请求的? JBuilder中的直线怎么做啊,是这样的直线..... 在线等待,一个日期格式的奇怪错误 如何正确读取文本文件 菜鸟级问题,我怎么对一个数组进行初始化操作,紧急情况 窗体的开关 如何确定FILE类型,是PLAIN TEXT还是BINARY的 讨论:在静态方法中,可以使用多线程吗? 在dos下运行时能提供整数参数吗? getday方法不是返回今天是周几的吗? 各位兄弟姐妹,帮帮我吧,着急死我啦
"双缓冲"技术并不是没听说过,只是理解得不透彻;原以为要让自己在程序里画的图像(不是现成的图片文件)跑起来,只需开避一个此图像大小的缓冲即可,呵呵,这样换成图片了还是闪烁,真让我紧张了一把:)
而现在把缓冲的大小定义为等于客户区,结果图像不闪了——仅仅是把缓冲改大了。
不知道把缓冲定义得比要移动的图像大但比客户区要小又会怎么样,各位有空帮忙试一把。 void b1_mouseClicked(MouseEvent e) {
Image bufferImg = this.createImage(300, 400);//300、400分别为Frame宽、高
Graphics bufferG = bufferImg.getGraphics();
Graphics g = this.getGraphics();
int y = 100;
int x = 0;
int w = bufferImg.getWidth(this);
int h = bufferImg.getHeight(this);
for(;x < 300;) {
x = x + 1;
bufferG.clearRect(0, 0, w, h);
bufferG.drawImage(img, x, y, null);
g.drawImage(bufferImg, 0, 0, null);
try {
Thread.currentThread().sleep(10);
} catch(Exception ex) {}
}
}欢迎讨论、欢迎蹭分!!