Java vykreslení čáry – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java vykreslení čáry – Java – Fórum – Programujte.comJava vykreslení čáry – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Jelec0
Newbie
11. 1. 2016   #1
-
0
-

Ahoj

Omlouvám se, za celkem hloupý dotaz, ale prostě na to nemohu přijít :(

 Přes google jsem našel tento způsob (zdroják níže). Ten má tu chybu, že když vytvořím instanci třídy Plocha, tak se ty čáry vykreslí bez toho, abych v ní volal jakoukoliv funkci. Já bych potřeboval mít ve třídě plocha metodu, kterou bych zavolal, předal jí souřadnice čáry a ona ji vykreslila na daný JPanel (která je právě vytvořen vytvořením instance třídy Plocha).

Napadlo mě akorát vytvořit třídu Cara, kdy bych vytvářel její instance, ale zase nevím, jak bych pak zařídil, aby se ty čáry vykreslovali na ten JPanel, na který chci. Stejně bych ale nejradši, aby byla ve třídě Plocha metoda, kterou bych volal a ona kreslila.

package app.gui;

import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Random;

public class Plocha extends JPanel {

    public Plocha() {

    }
    
    private void doDrawing(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;

        g2d.setPaint(Color.blue);

        int w = getWidth();
        int h = getHeight();

        Random r = new Random();

        for (int i = 0; i < 2000; i++) {

            int x = Math.abs(r.nextInt()) % w;
            int y = Math.abs(r.nextInt()) % h;
            g2d.drawLine(x+5, y, x, y+5);
        }
    }

    @Override
    public void paintComponent(Graphics g) {

        super.paintComponent(g);
        vykresliCaru(g);
    }
}
Nahlásit jako SPAM
IP: 89.190.44.–
Řešení
q
~ Anonymní uživatel
219 příspěvků
11. 1. 2016   #2
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Časté řešení je kreslit do obrázku a až ten pak vykreslovat na panel. Vyhneš se tím spoustě začátečnických potíží.

public class Platno extends JPanel {
    private BufferedImage img;
    ...
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        if (img != null) {
            g.drawImage(img, 0, 0, null);
        }
    }

    public BufferedImage getImage() {
        if (img == null) {
            img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
        }
        return img;
    }
	
    public void kresli(Shape tvar) {
        Graphics2D g = (Graphics2D) getImage().getGraphics();
        g.draw(tvar);
    }
}
Nahlásit jako SPAM
IP: 213.211.51.–
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, 6 hostů

Podobná vlákna

Java 3D, vykreslení trianglů — založil Scrash

Smazani cary — založil asddsa

Tloušťka čáry... — založil sirek

Tloušťka čáry — založil killermax

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ý