panoramix222000 Δημοσ. 22 Απριλίου 2009 Δημοσ. 22 Απριλίου 2009 Καλησπέρα και Χρόνια Πολλά, θα ήθελα να μου δώσει κανένα tip ή μια αρχή πώς θα ζωγραφίζω πάνω σε ένα σχήμα(στην περίμετρο του σχήματος) στην Java γραμμές! Έχω και ένα πρόβλημα, έχω ένα frame και πάνω τοποθετώ μια έλλειψη στο κέντρο του frame και μετά πάω να ζωγραφίσω και μια γραμμή πάνω στο frame και εξαφανίζετε η έλλειψη! Ευχαριστώ προκαταβολικά για τον χρόνο σας!
georgemarios Δημοσ. 22 Απριλίου 2009 Δημοσ. 22 Απριλίου 2009 γεια σου αφενος, δεν πολυ καταλαβα, θες να σχεδιασεις κατι πανω στο περιγραμμα ενος προσχεδιασμενου σχηματος; αφετερου, βαλε τον κωδικα που εχεις γραψει μπας και μπορεσει να τον διορθωσει καποιος....
panoramix222000 Δημοσ. 23 Απριλίου 2009 Μέλος Δημοσ. 23 Απριλίου 2009 Αυτό που θέλω είναι να κάνω αυτό: http://imageshack.gr/view.php?file=qi892pqng1p8vgug0cnw.jpg Και ο κώδικας μου είναι αυτός: >public class Main { public static void main(String[] args) { new MyFrame().setVisible(true); } } >import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; public class MyFrame extends JFrame{ MyFrame(){ super("MyFrame"); Toolkit t=this.getToolkit(); Dimension wsize=t.getScreenSize(); this.setBounds(wsize.width/4,wsize.height/4,wsize.width/2,wsize.height/2); center=new MyComponent(); first=new Mycurveline(50,50); getContentPane().add(center); getContentPane().add(first); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private MyComponent center; private Mycurveline first; } >import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JComponent; public class MyComponent extends JComponent{ MyComponent(){ } @Override protected void paintBorder(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.drawOval(getSize().width/3, getSize().height/3, getSize().width/3,getSize().height/3); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setColor(Color.RED); g2.fillOval(getSize().width/3, getSize().height/3, getSize().width/3,getSize().height/3); } } >import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.QuadCurve2D; import javax.swing.JComponent; public class Mycurveline extends JComponent{ Mycurveline(double x,double y){ this.x=x; this.y=y; } @Override public void paint (Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; // create new QuadCurve2D.Float QuadCurve2D q = new QuadCurve2D.Float(); // draw QuadCurve2D.Float with set coordinates q.setCurve(x,y,x+10,y,x+20,y+20); g2.draw(q); } private double x,y; }
georgemarios Δημοσ. 24 Απριλίου 2009 Δημοσ. 24 Απριλίου 2009 καταρχην, υπαρχει λογος συγκεκριμενος που εχεις το οβαλ και την καμπυλη σε ξεχωριστα components? αν ναι, εκτος απο τον προφανη μπελλα του προσανατολισμου των καμπυλων, θα πρεπει να παιξεις (πολυ) και με τα layouts για να τα κατανειμεις σωστα Αν τωρα αυτο που θες ειναι απλα να φτιαξεις μια παραμετρικη εικονα, καλο ειναι να τα βαλεις ολα στο ιδιο κομπονεντ που θα λειτουργει σαν καμβας. Χωρις να το εχω υλοποιησει, οι πρωτες ιδεες που μου ερχονται στο μυαλο ειναι: Χρειαζεσαι τη συναρτηση της ελλειψης που θα ζωγραφιστει (δε θυμαμαι πως το υλοποιει η ετοιμη συναρτηση της Java, ισως χρειαστει να την ζωγραφιζεις εσυ με καποια custom μεθοδο. Ισως) Θα παιρνεις μια ευθεια που ξεκινα απο το κεντρο της έλλειψης, θα την τεμνει σε καποιο σημειο και θα επεκτεινεται λιγο ακομα. Με το παρακατω σχημα, βλεπεις πως θα παιρνεις απο την ευθεια τα δυο σημεια που θες για μια καμπυλη (x1,y1) + (x2,y2). Ομοιως θα παραγονται και οι υπολοιπες καμπυλες φτιαχνοντας αντιστοιχες ευθειες ακτινωτα. Αυτη η προσεγγιση παντως θελει λιγα μαθηματικουλια αλλα ειναι ωραιος γριφος, παλεψε τον Καλη συνεχεια
virxen75 Δημοσ. 16 Μαΐου 2009 Δημοσ. 16 Μαΐου 2009 για το πρόβλημα που αναφέρεις ότι σβήνετε η έλλειψη όταν ζωγραφίσεις την καμπύλη πρέπει να σχεδιάζονται και τα 2 ή όσα θες στην ίδια paintComponent δες αυτό που έχω κάνει εγώ εδώ. οι τιμές που έχεις βάλει στην έλλειψη όμως αλλάζουν με το resize του jframe δες το.(βάλε σταθερές τιμές και όχι μεταβλητες τιμές-->getSize().width()) design2d.zip
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.