用了双缓冲.....有时运行时图片很慢显示出来,有时又快,不解!!请各位多多指点指点..?
代码:
package myprojects.drawline;import java.awt.*;
import java.awt.event.*;
import java.util.*;class DrawLine2 extends Frame {
int orgX = 0;
int orgY = 0; Image imgBg = getToolkit().getImage("..\\BG.gif");
Image imgPoint = getToolkit().getImage("..\\Point.gif");
Image oimg = null;
Graphics og =null;
int bg = 0; int x = 0;
int y = 0;
public void paintPoint(Graphics g,int x,int y)//显示棋子
{
this.x = x;
this.y = y;
g.drawImage(imgPoint,x,y,this);
if(og != null)
{
og.drawImage(imgPoint,x,y,this);
}
}
public void paint(Graphics g)
{
paintPoint(g,-10,-10);//解决一个无解问题的...
if (bg == 0)//控制第一次把背景载入
{
g.drawImage(imgBg,0,0,this);
if(og != null) //防止空指针异常
{
og.drawImage(imgBg,0,0,this);
} }
if(oimg != null)
{
g.drawImage(oimg,0,0,this); }
}
public DrawLine2() {
setSize(661,514);
setTitle("DrawLine双缓冲");
setVisible(true);
Dimension d = getSize();
oimg = this.createImage(d.width,d.height);
og = oimg.getGraphics();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
addMouseListener(new MouseAdapter()
{ public void mousePressed(MouseEvent e)
{
orgX = e.getX();
orgY = e.getY();
if(orgX>254 && orgX<634 && orgY>34 && orgY<414)
{
bg = 1;
Graphics g = getGraphics();
paintPoint(g,orgX-10,orgY-10);
g.setColor(Color.BLUE);
g.drawString(orgX + "," + orgY,orgX,orgY); og.setColor(Color.BLUE);
og.drawString(orgX + "," + orgY,orgX,orgY);
}
}
});
} public static void main(String args[])
{
DrawLine2 mainFrame = new DrawLine2();
mainFrame.setSize(661,514); }
}
代码:
package myprojects.drawline;import java.awt.*;
import java.awt.event.*;
import java.util.*;class DrawLine2 extends Frame {
int orgX = 0;
int orgY = 0; Image imgBg = getToolkit().getImage("..\\BG.gif");
Image imgPoint = getToolkit().getImage("..\\Point.gif");
Image oimg = null;
Graphics og =null;
int bg = 0; int x = 0;
int y = 0;
public void paintPoint(Graphics g,int x,int y)//显示棋子
{
this.x = x;
this.y = y;
g.drawImage(imgPoint,x,y,this);
if(og != null)
{
og.drawImage(imgPoint,x,y,this);
}
}
public void paint(Graphics g)
{
paintPoint(g,-10,-10);//解决一个无解问题的...
if (bg == 0)//控制第一次把背景载入
{
g.drawImage(imgBg,0,0,this);
if(og != null) //防止空指针异常
{
og.drawImage(imgBg,0,0,this);
} }
if(oimg != null)
{
g.drawImage(oimg,0,0,this); }
}
public DrawLine2() {
setSize(661,514);
setTitle("DrawLine双缓冲");
setVisible(true);
Dimension d = getSize();
oimg = this.createImage(d.width,d.height);
og = oimg.getGraphics();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
addMouseListener(new MouseAdapter()
{ public void mousePressed(MouseEvent e)
{
orgX = e.getX();
orgY = e.getY();
if(orgX>254 && orgX<634 && orgY>34 && orgY<414)
{
bg = 1;
Graphics g = getGraphics();
paintPoint(g,orgX-10,orgY-10);
g.setColor(Color.BLUE);
g.drawString(orgX + "," + orgY,orgX,orgY); og.setColor(Color.BLUE);
og.drawString(orgX + "," + orgY,orgX,orgY);
}
}
});
} public static void main(String args[])
{
DrawLine2 mainFrame = new DrawLine2();
mainFrame.setSize(661,514); }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货