Hi Lew,
You are describing the default behavior which assumes CAP_SQUARE.
The line itself is infinitely thin and goes from one coordinate to the
next, don't think of pixels. So, 20,60 to 20,60 goes nowhere - it has a
length of 0. 20,60 to 21,60 goes a total distance of 1 unit and has a
length of 1.
Now with CAP_SQUARE, the first line is extended by lw/2 off the front
and back so it extends a total of lw in the "direction" of the line
(ignore for now that a 0-length line has no direction), and obviously it
extends lw perpendicular to the line (and centered on the line). If
lw=1 then it is a 1x1 square - but only with CAP_SQUARE.
Also with CAP_SQUARE, the second line is extended by the same lw/2 off
both ends, and so it is 1 unit long and extends another lw units so it
is a total of lw+1 long or 2 units long for a lw=1 line. It extends lw
perpendicular as well so it is a 2x1 line.
With CAP_BUTT, there are no extensions so the 0-length line is only 0
units long and the 1-length line is only 1 units long...
...jim
[EMAIL PROTECTED] wrote:
Thanks Jim,
After all the time I've spent on this it seems I still do not full understand
it!
Everything I have read on this seems to confirms my thinking, it just doesn't
translate when using line widths > 1.
My understanding is (or was) that the arguments to the Line2D methods , as either x,y
coordinates or Points set the "endpoints" of the line.
If I draw a line (with line width of 1) from coordinates 20,60 to 20,60 it
would cover 1 pixel below and to the right of the coordinate which would be the
pixel 20,60 (current user space).
So as 20,60 & 21,60 are two distinct coordinate points , if I draw a line
using these coordinates as the endpoints, I expected to get a 2 pixel line length
(and did with line width of 1).
Similarly if i set 2 Points to the coordinates above and use ..
setLine(Point2D p1, Point2D p2) it would cover 2 pixels. ( and does with line
width of 1 but not with a width > 1
From the Sun APi Class Line2D docs ..
" setLine(Point2D p1, Point2D p2) Sets the location of the end points of
this Line2D to the specified Point2D coordinates."
Without wishing to take the discussion away from the points above, the end cap
options raise another issue..
If I had set CAP_SQUARE or ROUND with a line width of 1, where would it decide
to add the additional pixel? Normally half the line width and adding it to
each end point?
I guess this issue happens any time the line width is an odd pixel number.
....Lew
[Message sent by forum member 'aussielew' (aussielew)]
http://forums.java.net/jive/thread.jspa?messageID=292007
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".