Results 1 to 2 of 2
- 02-15-2008, 07:32 AM #1
Member
- Join Date
- Jan 2008
- Posts
- 7
- Rep Power
- 0
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.
- 02-16-2008, 11:22 PM #2
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
-
Mark thread RESOLVED.
By Eranga in forum Suggestions & FeedbackReplies: 45Last Post: 04-02-2008, 10:34 AM -
how to draw an arrow mark using java swing
By sandhyau in forum AWT / SwingReplies: 5Last Post: 02-07-2008, 11:52 AM -
Draw an arrow
By Albert in forum SWT / JFaceReplies: 3Last Post: 02-01-2008, 08:11 AM -
BufferedReader .mark(int readAheadLimit)
By ShoeNinja in forum New To JavaReplies: 1Last Post: 11-16-2007, 10:58 PM -
Reading in data from file line by line
By bluekswing in forum New To JavaReplies: 1Last Post: 10-02-2007, 12:19 AM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks