Anonymní profil Jimi – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jimi – Programujte.comAnonymní profil Jimi – Programujte.com

 

Příspěvky odeslané z IP adresy 188.112.125.–

Jimi
Java › Vykreslovanie cez Double buf…
11. 8. 2015   #204270

Ciel mojej prace je naprogramovať grafický editor a nakoniec som to prekreslovanie vytiešil sám. Čítal som si dosť na internete a vyriešíl tak že do toho BufferImage objektu nakreslím obdlžnik s výplňou na celú kreslenú plochu s farbou pozadia a potom do toho nakreslím tie čiary. Týmto sa prekreslí celá plocha bez volania repaint(); a je to fakt rýchle.Vyzerá to takto:

fps.Update(time);
       buffImage = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
       Graphics2D g2d_bi = (Graphics2D)this.buffImage.createGraphics();
       g2d_bi.setColor(this.getBackground()); //nastavý farbu ktorou sa ma kresliť na farbu pozadia plátna
       g2d_bi.fillRect(0,0, this.getWidth(),this.getHeight()); //vykreslí obdlžnik na celú kresliacu plochu, čim sa zmaže predchadzajúce kreslenie
       for(int i = 0;i < arrayLines.size();i++)
       {
         g2d_bi.setColor(Color.BLUE);
         g2d_bi.draw(arrayLines.get(i));
       }
       if(line_global != null)
       {
         g2d_bi.setColor(Color.BLUE);
         g2d_bi.draw(line_global); // vykreslí čiaru ktorá sa práve ťaha myšou na určitý bod;
       }
       g2d_bi.drawString("FPS: " + Float.toString(fps.GetCountFPS()), 200, 50);
       Graphics2D g2d = (Graphics2D)this.getGraphics();
       if(g2d != null && buffImage != null)
       {
           g2d.drawImage(buffImage, transform1, this);
       }
       Toolkit.getDefaultToolkit().sync();
       g2d.dispose();
Jimi
Java › Vykreslovanie cez Double buf…
10. 8. 2015   #204241

Dobrý deň,

mám vytvorenú nasledujucu metodu

public void RenderScreen(long time)
   {
       buffImage = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
       Graphics2D g2d_bi = (Graphics2D)this.buffImage.createGraphics();
       for(int i = 0;i < arrayLines.size();i++)
       {
         g2d_bi.setColor(Color.BLUE);
         g2d_bi.draw(arrayLines.get(i));
       }
       if(line_global != null)
       {
         g2d_bi.setColor(Color.BLUE);
         g2d_bi.draw(line_global);
       }
       
       Graphics2D g2d = (Graphics2D)this.getGraphics();
       if(g2d != null && buffImage != null)
       {
           g2d.drawImage(buffImage, null, 0, 0);
       }
       Toolkit.getDefaultToolkit().sync();
       g2d.dispose();
   }

Túto metódu volám v slučke ktorá sa opakuje do ukončenia alikacie na vykreslenie všetkých čiar ktoré chcem kresliť na obrazovku. Problém mám v tom že keď nezavolám metódu repaint tak sa mi obrazovka neprekreslí a nezmažú sa z obrazovky čiray ktoré sa už v mynulosti vykreslili ale neskôr ich súradnice neboli uchované a už neexistujú. Dá sa nejako kresliť len tie čiary ktoré sa uchovávajú v poly a ostatné ktoré boli nakreslene ale do tohoto pola pridane neboli zmazať z obrazovky bez volania metody rapaint() ?

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý