Posted by aussielew
on August 5, 2008 at 8:55 PM PDT
Hoping someone can help me with this one ...?
I need to draw lines with a width greater than 1 and the lengths may be a real value so I am using
I need to draw exact (calculated)lengths so I am using CAP_BUTT so the line does not have any additional
apparent length (the other CAP options have the effect of adding the line width to the line)
The problem I am having is that once the line width is set to greater than 1, the lines are actually drawn 1 pixel short.
I am sure I am missing soething simple here but have spent a lot of time on it!
I know that I can work around it but do I need to, I shouldn't have to + 1 to my line lengths depending on there width?
The following demonstrates the problem. I am drawing on a JPanel within a JFrame, JDK/JRE 6, Windows
g2.draw(new Line2D.Float(20,40,20,75)); // vertical line as marker only
// draw 2 lines with line width of 1
g2.draw(new Line2D.Float(20,60,21,60)); // draws 2 pixel line as expected
g2.draw(new Line2D.Float(22,60,23,60)); // draws 2 pixel line as expected ... total of 4 pixels
// draw 2 lines with line width of 10
g2.draw(new Line2D.Float(20,70,21,70)); // draws 1 pixel only at 20,70
g2.draw(new Line2D.Float(22,70,23,70)); // draws 1 pixel only at 22,70... so, each line is shortened by 1 pixel
// this applies to any line width > 1