Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kako crtati linije - POMOC?????

[es] :: Java :: kako crtati linije - POMOC?????

[ Pregleda: 1799 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

seka1

Član broj: 182275
Poruke: 1
*.tz.dlp334.bih.net.ba.



Profil

icon kako crtati linije - POMOC?????23.05.2008. u 16:22 - pre 193 meseci
Pozdrav!

Imam problem oko jednog zadatka. treba napraviti program koji iscrtava segment krive linije od pozicije na koju je korisnik kliknuo mišem na prozoru pa sve do naredne pozicije na koju korisnik klikne na prozoru. Dok korisnik ne klikne drugi put mišem segment linije po prozoru prati kretnje mišem (kraj segmenta raste i pomjera se prema poziciji miša na prozoru, a pocetak je fiksiran na poziciji gdje je korisnik prvi put kliknuo mišem). Kada korisnik klikne drugi put na prozor, segment
linije je fiksiran, a novi segment linije sada prati kretnje miša do naradnog klika. Iscrtavanje krive linije završava se dvostrukim klikom miša na prozoru.
Pored toga, na ekranu se nalazi i taster koji služi za brisanje iscrtane linije na ekranu, kako bi se moglo zapoceti sa iscrtavanjem nove linije.

Imam neko rjesenje , ali umjesto da iscrtava ove linije koje trebaju , linija rotira kako se mis krece. Ako moze ko da mi pokaze sta u kodu treba promjeniti i kako da bi iscrtavalo kako treba, ili ako treba sta izbaciti. HVALA
Evo koda :

package problem1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.JPanel;


public class Problem1 {

public static void main(String[] args) {
MojFrame prozor = new MojFrame();
prozor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
prozor.setVisible(true);
}

}

//Novi frame
class MojFrame extends JFrame
{
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension ekran = kit.getScreenSize();
public MojFrame()
{
setLocation(ekran.width/4,ekran.height/4);
setSize(ekran.width/2,ekran.height/2);
setTitle("Linija");

//Dodajemo panel na frame
//Uzimamo contentPane na koji ćemo staviti panel
Container contentPane = getContentPane();
//sada kreiramo panel
MojPanel panel = new MojPanel();
//Dodajemo ga u contentPane
contentPane.add(panel);
}
}

class MojPanel extends JPanel
{
private Line2D linija;
private double duzina;
private double pocetna_x, pocetna_y;
private double krajnja_x, krajnja_y;
int slucaj = 0;


public void paintComponent(Graphics g)
{
super.paintComponent(g);//Crta prvo sama sebe
Graphics2D g2 = (Graphics2D) g;

Toolkit kit = Toolkit.getDefaultToolkit();
Dimension sredina = kit.getScreenSize();
pocetna_x = sredina.width/4;
pocetna_y = sredina.height/4;

if(slucaj==1) g2.draw(linija);
}

public MojPanel()
{
//Kreirajmo jedno dugme
ImageIcon Ikona = new ImageIcon("Nova linija.gif");

JButton linija = new JButton("Nova linija",Ikona);

//Dodajemo ga na panel
setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.add(linija);

add(panel,BorderLayout.SOUTH);
//Kreiramo slušače
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMover());
}



//Osluškivač za tipke miša
private class MouseHandler implements MouseListener
{
public void mouseClicked(MouseEvent arg0) {
krajnja_x=arg0.getX();
krajnja_y=arg0.getY();
slucaj = 1;
duzina = Math.sqrt(Math.pow(krajnja_x-pocetna_x,2)+Math.pow(krajnja_y-pocetna_y,2));
linija = new Line2D.Double(pocetna_x,pocetna_y,krajnja_x,krajnja_y);
}
public void mouseEntered(MouseEvent arg0) {
}

public void mouseExited(MouseEvent arg0) {
}

public void mousePressed(MouseEvent arg0) {
}

public void mouseReleased(MouseEvent arg0) {
repaint();
}
}
//Osluškivač pokreta miša
private class MouseMover implements MouseMotionListener
{

public void mouseDragged(MouseEvent arg0) {
repaint();
}

public void mouseMoved(MouseEvent arg0) {
double trenutna_x=arg0.getX();
double trenutna_y=arg0.getY();
double beta = Math.atan2(trenutna_x-pocetna_x,trenutna_y-pocetna_y);
krajnja_y=duzina*Math.cos(beta)+pocetna_y;
krajnja_x=duzina*Math.sin(beta)+pocetna_x;
linija = new Line2D.Double(pocetna_x,pocetna_y,krajnja_x,krajnja_y);
repaint();
}
}



}






 
Odgovor na temu

grizzly
Beograd

Član broj: 7978
Poruke: 262



+4 Profil

icon Re: kako crtati linije - POMOC?????23.05.2008. u 23:10 - pre 193 meseci
Prvo da kazem da uopste nisam ekspert u 2d grafici (ili bilo kakvoj drugoj) ali ovo i ne lici na problem iz toga. Ti korisitis Line2D koja se ponasa kao kriva kojoj zadas pocetnu i krajnju tacku, pa na osnovu jos nekih parametra zadas jedancinu krive. Zasto ne bi cuvala sve tacke kojima prolazi mis od prvog klika do drugog, pa ih jednostavno iscrtala nakon toga?

A osnovni tutorijal grafike, izmedju ostalog imas ovde: http://java.sun.com/docs/books/tutorial/
 
Odgovor na temu

[es] :: Java :: kako crtati linije - POMOC?????

[ Pregleda: 1799 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.