Realtime graf pomoci Jpanelu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Realtime graf pomoci Jpanelu – Java – Fórum – Programujte.comRealtime graf pomoci Jpanelu – Java – Fórum – Programujte.com

 

Monca_0
Duch
10. 2. 2014   #1
-
0
-

Zdravim, potrebovala bych pomoct s aplikaci osciloskop. Vycitam data ze seriove linky a ty vykresluji pomoci graphic2D do Jpanelu. Zatim to delam tak ze do promene nacitam data a ty vzdy, kdyz mam vice jak 100 bodu vykreslim. Jenze vzdy prekresluji cely panel, neexistuje funkce ktera by jen dovykreslila novy bod a posunula okno tak, ze druhe strany by se ten bod zase smazal? Aby se mi nemenilo meritko a nemusela bych porad prekreslovat cely Jpanel, potrebuju aby to fungovalo reatime tak 50x za sekundu.

protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        int w = getWidth();
        int h = getHeight();

        //System.out.println(w + "x" + h);
        double xScale = (w - 2 * PAD) / (xMax - xMin);
        double yScale = (h - 2 * PAD) / (yMax - yMin);
        if (firstTime) {
            System.out.printf("xScale = %.1f  yScale = %.1f%n",
                    xScale, yScale);
        }
        Point2D.Double origin = new Point2D.Double(); // Axes origin.
        Point2D.Double offset = new Point2D.Double(); // Locate data.

        origin.x = PAD;
        offset.x = w;
        origin.y = h - PAD;
        offset.y = origin.y;

         // Draw abcissa.
        g2.draw(new Line2D.Double(PAD, origin.y, w - PAD, origin.y));
        // Draw ordinate.
        g2.draw(new Line2D.Double(origin.x, PAD, origin.x, h - PAD));
        g2.setPaint(Color.red);
        // Mark origin.
        g2.fill(new Ellipse2D.Double(origin.x - 2, origin.y - 2, 4, 4));

        g2.setPaint(Color.green.darker());

        double x1, x2, y1, y2;

        for (int i = 0; i < x.length - 2; i++) {
            x1 = offset.x - xScale * x[i];
            y1 = offset.y - yScale * y[i];
           
                x2 = offset.x - xScale * x[i + 1];
                y2 = offset.y - yScale * y[i + 1];
           
              
            g2.setPaint(Color.green.darker());
            g2.draw(new Line2D.Double(x1, y1, x2, y2));
Nahlásit jako SPAM
IP: 194.138.12.–
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, 13 hostů

Podobná vlákna

Update JPanelu — založil Šimon

Zarovnani v JPanelu — založil Hurys

Realtime programování — založil Norton

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ý