00000004.htm
来自「水木清华BBS」· HTM 代码 · 共 67 行
HTM
67 行
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: KHP (人之初), 信区: Java <BR>标 题: Re: 如何使画面不闪烁? <BR>发信站: BBS 水木清华站 (Mon Aug 2 11:57:07 1999) <BR> <BR> <BR>每次 repaint 都创建一次,这样太浪费了吧。 <BR>可以这样,增加两个成员变量 Image offImg, Graphics offG,改写 addNotify, <BR>paint 和 update 如下: <BR> <BR>public void paint(Graphics g) { <BR> offG.drawLine(...); <BR> offG.drawImage(...); <BR> ... <BR> ... <BR> offG.drawString(...); /* 意思就是要在 g 上画的东西先画在 offG 上 */ <BR> <BR> g.drawImage(offImg, 0, 0, this); <BR>} <BR> <BR>public void update(Graphics g) { <BR> paint(g); <BR>} <BR> <BR>public void addNotify() { <BR> super.addNotify(); <BR> offImg = createImage(size().width, size().height); <BR> offG = offImg.getGraphics(); <BR>} <BR> <BR>这样可以有效地防止画面的闪烁。 <BR> <BR>【 在 Uet (LR) 的大作中提到: 】 <BR>∶<I> 建议使用双缓冲技术,将update(Graphics g)改为 </I><BR>∶<I> update(Graphics g){ </I><BR>∶<I> Image img = creatImage(...); </I><BR>∶<I> Graphics ig = img.getGraphics(); </I><BR>∶<I> paint(ig); </I><BR>∶<I> g.drawImage(..,img...); </I><BR>∶<I> } </I><BR>∶<I> paint(Graphics g){ </I><BR>∶<I> ....//不用动 </I><BR>∶<I> } </I><BR>∶<I> 具体参数记不请了。原理就是:先将图画画到一个隐藏虚拟画面上,然后在将这个画面 </I><BR>∶<I> 一把仍到显示面版上。 </I><BR> <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 210.78.130.130] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?