Results 1 to 2 of 2
  1. #1
    sandhyau is offline Member
    Join Date
    Jan 2008
    Posts
    7
    Rep Power
    0

    Default how u rotate the arrow mark as the line moves accordingly

    can any one help me how the angles of the arrow mark should rotate as the line moves accordingly. here i am placing the code for arrow mark in the fixed angle.


    AffineTransform at = AffineTransform.getTranslateInstance((point2.x + point4.x)/2, (point2.y + point4.y)/2);
    int b = 8;
    double theta = Math.toRadians(45);
    GeneralPath path = new GeneralPath();
    path.moveTo(0,0); // distance between line and the arrow mark
    int x =(int)(-b * Math.cos(theta));
    int y =(int) (b * Math.sin(theta));
    path.lineTo(x,y);
    x = (int) (-b * Math.cos(-theta));
    y = (int) (b * Math.sin(-theta));
    path.moveTo(0,0); // distance between line and the arrow mark
    path.lineTo(x,y);
    Shape shape = at.createTransformedShape(path);
    graphics2D.setPaint(Color.black);
    graphics2D.draw(shape);
    at.rotate(theta,x,y);
    drawLine(graphics2D,point2.x,point2.y,point4.x,poi nt4.y);// line drawing 2 points.

  2. #2
    hardwired's Avatar
    hardwired is offline Senior Member
    Join Date
    Jul 2007
    Posts
    1,576
    Rep Power
    9

    Default

    Java Code:
    Point point2 = new Point(100,200);
    
    protected void paintComponent(Graphics g) {
        Graphics2D graphics2D = (Graphics2D)g;
        AffineTransform at =
            AffineTransform.getTranslateInstance(point2.x, point2.y);
        int b = 8;
        double theta = Math.toRadians(45);
        // The idea of using a GeneralPath is so we can
        // create the (three lines that make up the) arrow
        // (only) one time and then use AffineTransform to
        // place it anywhere we want.
        GeneralPath path = new GeneralPath();
    
        // Add the arrow shaft.
        path.moveTo(0,0);
        path.lineTo(-100,0);
    
        // distance between line and the arrow mark  <** not **
        // Start a new line segment from the position of (0,0).
        path.moveTo(0,0);
        // Create one of the two arrow head lines.
        int x =(int)(-b * Math.cos(theta));
        int y =(int) (b * Math.sin(theta));
        path.lineTo(x,y);
    
        // distance between line and the arrow mark  <** not **
        // Make the other arrow head line.
        x = (int) (-b * Math.cos(-theta));
        y = (int) (b * Math.sin(-theta));                
        path.moveTo(0,0);
        path.lineTo(x,y);
    
        // theta was used for the angle between the arrow
        // shaft and each of its arrow head lines.
        // If you wnat to also rotate the arrow (GeneralPath)
        // by 45 degrees, okay.
        // Set up the transform the way you want it, ie, do
        // all the work before drawing the final result.
        at.rotate(theta,x,y);
        Shape shape = at.createTransformedShape(path);
        graphics2D.setPaint(Color.black);
        graphics2D.draw(shape);
    
        // This is unnecessary since you are using the
        // GeneralPath to store all three lines segments
        // that make up the arrow, ie, the GeneralPath is
        // the arrow. So you apply the AffineTransform to
        // the GeneralPath and it does all the work.
        // line drawing 2 points.
    //    graphics2D.drawLine(point2.x,point2.y,point4.x,point4.y);
    }

Similar Threads

  1. Mark thread RESOLVED.
    By Eranga in forum Suggestions & Feedback
    Replies: 45
    Last Post: 04-02-2008, 10:34 AM
  2. how to draw an arrow mark using java swing
    By sandhyau in forum AWT / Swing
    Replies: 5
    Last Post: 02-07-2008, 11:52 AM
  3. Draw an arrow
    By Albert in forum SWT / JFace
    Replies: 3
    Last Post: 02-01-2008, 08:11 AM
  4. BufferedReader .mark(int readAheadLimit)
    By ShoeNinja in forum New To Java
    Replies: 1
    Last Post: 11-16-2007, 10:58 PM
  5. Reading in data from file line by line
    By bluekswing in forum New To Java
    Replies: 1
    Last Post: 10-02-2007, 12:19 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •