请高手指教,如何在绘图时消除闪烁?在线急等!!

bashendan 2004-08-06 02:47:22
我的代码如下:
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.Graphics;
import java.awt.event.*;

public class GraphApplet extends Applet implements Runnable, MouseListener {
private int delay=20;
Thread thread;

private int[] nPosXY;//存放坐标信息的数组,数组下标为x值,相应单元存的为y值
private int nOffset=0;//偏移量

public void init()
{
setBackground(Color.black);
nPosXY=new int[getSize().width];
for(int x=0;x<nPosXY.length;x++)
{
nPosXY[x]=(int)f(x);
}
}

public void start()
{
thread=new Thread(this);
thread.start();
nOffset=nPosXY.length;
}

public void stop()
{
thread=null;
}

public void run()
{
Thread current=Thread.currentThread();
while(thread==current)
{
try
{
Thread.currentThread().sleep(delay);
}
catch(InterruptedException e)
{
}
repaint();
if(nOffset>=nPosXY.length)
{//计算坐标
for(int i=0;i<nPosXY.length-1;i++)
{
nPosXY[i]=nPosXY[i+1];
}
nPosXY[nPosXY.length-1]=(int)f(nOffset);
nOffset++;
}
}
}

double f(double x)
{
return (Math.cos(x/5) + Math.sin(x/7) + 2)
* getSize().height / 4;
}

public void paint(Graphics g)
{
g.setColor(Color.green);
g.clearRect(0,0,getSize().width,getSize().height);
for(int i=0;i<nPosXY.length;i++)
{
g.drawLine(i,nPosXY[i],i+1,nPosXY[i+1]);
}
}

public void update(Graphics g)
{//重画
paint(g);
}
//......
}
在运行的时候由于在paint函数中用了clearRect所以导致画面有闪烁,请问有什么解决办法么?谢谢!
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcdhy 2004-08-08
  • 打赏
  • 举报
回复
直接使用 JApplet 就可以了.
jackkui 2004-08-07
  • 打赏
  • 举报
回复
简单的方法你可以不用清楚或者刷新的方法,在原有的图画上
用背景色在画一遍那个图形,这样那个图形就被覆盖了
然后你就可以移动那个图形,不会闪烁了
dlxu 2004-08-07
  • 打赏
  • 举报
回复
经典算法,双缓冲啊,设计两个画布对象,当一个在前台显示的时候,另外下一个就在后台绘制,当画面要改变时,就直接把刚绘制好的填上去,刚才前台显示用得那个画布这次成为后台的,在后台绘制下一个画面,如此循环,屏幕就不会闪烁了
kongkongye 2004-08-07
  • 打赏
  • 举报
回复
Graphics中的方法:
setXORMode(Color c1)
c1:背景色。
bashendan 2004-08-06
  • 打赏
  • 举报
回复
请问,该如何做呢?
shuneng 2004-08-06
  • 打赏
  • 举报
回复
如果是动画则建议用异或运算将先前画的去掉
再画新的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧