我做了一个画二维灰度图的java程序,运行时闪烁,不知道怎样才能避免闪烁.请各位大虾帮忙指点一下.最好写出程序.不胜感激!
package graphics.test;import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class Cray extends Applet
{ int[][] abc;
int max;
public void paint(Graphics g)
{
//this.setBackground(Color.CYAN);
this.resize(600,400);
Dimension size=this.getSize();
int wid=(int)size.getWidth();
int hei=(int)size.getHeight();
hei=80*hei/100;
wid=80*wid/100;
g.translate(1*wid/8,1*hei/8);
g.drawRect(0,0,wid,hei);
g.setColor(Color.BLACK);
g.fillRect(0,0,wid,hei);
int[] pixels=new int[wid*hei];
abc=new int[wid][hei];
for(int i=0;i<wid;i++)
{
for(int j=0;j<hei;j++)
{
abc[i][j]=(i+1)*(j+1);
}
}
max=abc[wid-1][hei-1];
for(int j=0;j<hei;j++)
{
for(int i=0;i<wid;i++)
{
pixels[j*wid+i]=255*abc[i][j]/max;
}
}
Image pic=createImage
(new MemoryImageSourc(wid,hei,pixels,0,wid));
g.drawImage(pic,0,0,this); //显示黑白图片
repaint();
}
}
package graphics.test;import java.applet.*;
import java.awt.*;
import java.awt.image.*;
public class Cray extends Applet
{ int[][] abc;
int max;
public void paint(Graphics g)
{
//this.setBackground(Color.CYAN);
this.resize(600,400);
Dimension size=this.getSize();
int wid=(int)size.getWidth();
int hei=(int)size.getHeight();
hei=80*hei/100;
wid=80*wid/100;
g.translate(1*wid/8,1*hei/8);
g.drawRect(0,0,wid,hei);
g.setColor(Color.BLACK);
g.fillRect(0,0,wid,hei);
int[] pixels=new int[wid*hei];
abc=new int[wid][hei];
for(int i=0;i<wid;i++)
{
for(int j=0;j<hei;j++)
{
abc[i][j]=(i+1)*(j+1);
}
}
max=abc[wid-1][hei-1];
for(int j=0;j<hei;j++)
{
for(int i=0;i<wid;i++)
{
pixels[j*wid+i]=255*abc[i][j]/max;
}
}
Image pic=createImage
(new MemoryImageSourc(wid,hei,pixels,0,wid));
g.drawImage(pic,0,0,this); //显示黑白图片
repaint();
}
}
public void update(Graphics g) {
if (offScrImage == null) {
offScrImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);
}
Graphics gOffScrImage = offScrImage.getGraphics();
Color c = gOffScrImage.getColor();
gOffScrImage.setColor(Color.GREEN);
gOffScrImage.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
gOffScrImage.setColor(c);
paint(gOffScrImage);
g.drawImage(offScrImage, 0, 0, null); }
其中GAME_WIDTH, GAME_HEIGHT为屏幕的宽度和长度的两个常量.