|
|
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
Подскажите кто может :) проблема в том что при вызове setSize() происходит рефрешь компонета, независимо от того были ли переопределены какие функции отвечающие за перерисовку repaint() paint() ...... все равно происходит гдето на уровне Object глобальный рефрешь для этого компонента, подскажите пожалуйста как обойти это и сделать рефрешь только тогда когда это нужно, или как сделать что бы компонент не вызывал функцию clearRect, потому что уж очень сильно моргает когда происходит перерисовка, если я ручками растягию окошко какое .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 20:45:33 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
dimchikПодскажите кто может :) проблема в том что при вызове setSize() происходит рефрешь компонета, независимо от того были ли переопределены какие функции отвечающие за перерисовку repaint() paint() ...... все равно происходит гдето на уровне Object глобальный рефрешь для этого компонента, подскажите пожалуйста как обойти это и сделать рефрешь только тогда когда это нужно, или как сделать что бы компонент не вызывал функцию clearRect, потому что уж очень сильно моргает когда происходит перерисовка, если я ручками растягию окошко какое .... На уровне Object? С трудом верится... В переопределенных методах repaint, paint или updateUI уберите вызовы super.paint() и т.п. Тогда точно не будут вызываться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:08:29 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
чес слово, вообще нигде нету super... а кромя конструктора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:12:48 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
dimchikчес слово, вообще нигде нету super... а кромя конструктора updateUI переопределили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:14:37 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
Ruslan.Isbarov dimchikчес слово, вообще нигде нету super... а кромя конструктора updateUI переопределили? хотя бред... что то тут не то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:15:22 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
вот проект для теста, и если его запустить то видно как моргает именно перерисовка, а если нагрузить еще чемнибудь, то вообще заметно что от setsize приходит clearrect class mp extends Panel { //вот переопределены репаинты public void repaint() {} public void repaint( long tm ) {} public void repaint( int x, int y, int width, int height ) {} public void repaint( long tm, int x, int y, int width, int height ) {} public void paint(Graphics ga) { // super нету Image im = this.createImage(getSize().width,getSize().height); Graphics g = im.getGraphics(); g.drawRect(0,0,getSize().width-1,getSize().height-1); g.fillRect(20,20,40,40); g.drawString("Hello",1,10); ga.drawImage(im,0,0,null); } } class th extends Thread { Applet1 par; public void run() { for (int a=0;a<140;a++) { par.m.setSize(par.m.getSize().width-1,par.m.getSize().height-1); try {this.sleep(50);}catch(Exception ee){} } for (int a=0;a<140;a++) { par.m.setSize(par.m.getSize().width+1,par.m.getSize().height+1); try{this.sleep(50);}catch(Exception ee){} } } } public class Applet1 extends Applet { mp m = new mp(); Button bt = new Button("start refresh"); public void init() { setLayout(null); m.setSize(200,200); m.setLocation(50,10); m.setBackground(Color.yellow); add(m); bt.setSize(30,30); bt.setLocation(1,1); add(bt); } public boolean action(Event ev,Object ob) { th thh= new th(); thh.par=this; thh.start(); return true; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2006, 21:28:57 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
А ты так напиши: private boolean refresh = true; public void setSize( int x, int y, boolean refresh ) { this.refresh = refresh; super.setSize( x, y ); } public void paint( Graphics g ) { if( !refresh ) { refresh = true; return; } // Дальше все остальное } Примерно таким образом можно устанавливать размер с рефрешем или без по желанию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 18:42:59 |
|
||
|
проблема с обновлением экрана при setSize
|
|||
|---|---|---|---|
|
#18+
весь код в paint у меня введен только для того что бы проще было видеть что моргает .... а проблема глубже закапана, сама super.setSize() вызывает системный рефрешь, а уже после этого уже вызывается paint так что, что бы мы не делали в паинте, clearRect вызывается и без него .... и потом если делаем setBackground() .... цвет фона все равно рисуется даже если паинт задизейблить вот енто рисование фона мне кажется и моргает, вот его бы и перехватить .... может кто знает как енто сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 19:17:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34184398&tid=2147262]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
206ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 493ms |

| 0 / 0 |
