00000004.htm

来自「水木清华BBS」· HTM 代码 · 共 67 行

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

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?