Vykreslovanie cez Double buffer bez volania rapaint – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vykreslovanie cez Double buffer bez volania rapaint – Java – Fórum – Programujte.comVykreslovanie cez Double buffer bez volania rapaint – Java – Fórum – Programujte.com

 

Jimi
~ Anonymní uživatel
75 příspěvků
10. 8. 2015   #1
-
0
-

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() ?

Nahlásit jako SPAM
IP: 188.112.125.–
Jimi
~ Anonymní uživatel
75 příspěvků
11. 8. 2015   #2
-
0
-

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();
Nahlásit jako SPAM
IP: 188.112.125.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Vykreslovanie JPG — založil mORb

Vykreslovanie v GD2 kniznice — založil BgDestroy

Vykreslovanie herneho pola — založil Jozef Vrana

Klavesnicový buffer — založil Grungy

3D projekce - Z-buffer — založil linarts

Moderátoři diskuze

 

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