[Java] drawLine richtig benutzen?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von CS-Luck0r, 16. Januar 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 16. Januar 2009
    drawLine richtig benutzen?

    Code:
    /**
     * @(#)kreis.java
     *
     *
     * @author 
     * @version 1.00 2009/1/16
     */
    
    import java.awt.*;
    import java.awt.event.*;
    
    public class kreis extends Frame
    {
     public static void main(String[] args)
     {
     kreis wnd = new kreis();
     }
    
     public kreis()
     {
     super("Mein Java-Kreis^^");
     addWindowListener
     (
     new WindowAdapter() 
     {
     public void windowClosing(WindowEvent event)
     {
     System.exit(0);
     }
     }
     );
     
     setBackground(Color.white);
     setSize(500,500);
     setVisible(true);
     }
    
     public void paint(Graphics g)
     {
     g.drawLine(0,0,50,100);
     }
    }
    So, mal den Code vorweg gepostet.

    Also frage dazu, es tut ja alles wunderbar, ist ja auch nicht das problem. Das Problem ist, das er bei den Koordinaten von drawLine nimmt er dann die Obere Fensterecke, und nicht die von dem eigentlichen Arbeitsbereich. Muss ich jedes mal die Koordinaten so verändern, das es pi mal daumen passt? Oder gibts da ne andere Lösung?

    Grüße
     
  2. 16. Januar 2009
    AW: drawLine richtig benutzen?

    Versteh dein Problem nicht 100%ig.

    Bei Java ist es so, dass das Koordinatensystem an der x-achse gespiegelt ist. Also oben links ist (0|0), der Ursprung. +Y geht dann nach unten und +X nach rechts.
    0------------ +x
    |
    |
    |
    |
    +y

    "Das Problem ist, das er bei den Koordinaten von drawLine nimmt er dann die Obere Fensterecke, und nicht die von dem eigentlichen Arbeitsbereich." Vllt. liegts an mir, aber kannst du das Problem nochmal näher erläutern? ^^

    edit: wenn du einen Kreis malen möchtest, sollteset du drawPolygon (aber eher kompliziert für kreise) oder
    Ellipse2d nehmen:
    Code:
    Graphics2D g2 = (Graphics2D)g;
    Ellipse2D.Double ellipse = new Ellipse2D.Double(0,0,100,100);
    g2.draw(ellipse);
    
     
  3. 16. Januar 2009
    AW: drawLine richtig benutzen?

    hab dein problem denke ich auch net ganz richtig verstanden ...
    du willst also den kreis direkt in nem arbeitsbereich zeichnen und nicht (wie standardmäßig) ab dem koordinatensystemursprung weg?

    alles was du siehst am bildschirm is ja im selben koordinatensystem. du kommst also nicht drum rum dir irgendwo zu merken wo dein arbeitsbereich beginnt um diese koordinate dann für dein drawline mitzugeben.

    So kannst du dir das vorstellen:

    0,0-------------------
    |AWT-Fenster
    |
    | 12,13-----------
    | | Arbeitsbereich
    | |
    | |
     
  4. 16. Januar 2009
    AW: drawLine richtig benutzen?

    Ja sowas meinte ich^^

    Ich meinte es so, das das eigentliche Fenster der Koordinaten ja gaaaaanz oben beginnt, also ab dem Gesamten Fenster, und nicht erst ab dem Bereich wo die eigentliche Ausgabe stattfindet.

    Sprich, ich kann ruhig mit 0,0 anfangen, jedoch wirkt die Linie dann schief, da sie ja erst später (im Sichtbaren Bereich) schief eintrifft.

    Code:
    0,0-------------------
    |\
    | \
    | \ 12,13-----------
    | \| Arbeitsbereich
    | |
    | \
    | \
    
    so Dürft ihr euch das vorstellen. und ich will aber nun das die Linie genau an der Ecke beginnt, wo der Sichtbare Arbeitsbereich ist.

    Hoffe ihr versteht mich nun ^^
     
  5. 16. Januar 2009
    AW: drawLine richtig benutzen?

    Na dann einfach
    Code:
    g.drawLine(12,13,50,100);
    oder was? (falls der Arbeitsbereich wirklich bei (12|13) beginnt..)

    g.drawLine(x start, y start, x ende, y ende);

    Allgemein würde ich aber nie mit konstanten Zahlen, sondern mit Verhältnissen arbeiten.

    z.B.

    Code:
     int x=getWidth();
     int y=getHeight();
    
    und dann
    Code:
    drawLine(12,13,x/2,y/2);
    Damit alles gleich bleibt, wenn du die Fenstergröße änderst.
     
  6. 16. Januar 2009
    AW: drawLine richtig benutzen?

    das problem kenne ich; es hat mich derbe angekotzt
    in der tat: der rand wird mitgezählt.

    gottseidank kann man diese benötigten pixel abfragen:
    http://www.addison-wesley.de/Service/Krueger/kap15001.htm
     
  7. 16. Januar 2009
    AW: drawLine richtig benutzen?

    Dickes dankeschön!!^^

    habt alle ne bewertung
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.