# how to draw a dashed line between two points

Discussion in 'Java' started by Rick, Sep 30, 2003.

1. ### RickGuest

Can someone please show me how to draw a dashed line between two points?
Is there a method in the AWT library that allows this? Thanks!

Rick

Rick, Sep 30, 2003

2. ### Robert OlofssonGuest

Robert Olofsson, Sep 30, 2003

3. ### Tr0mBoNe-Guest

Rick <rrquick@nospam-com> wrote in message news:<3f79818a\$>...
> Can someone please show me how to draw a dashed line between two points?
> Is there a method in the AWT library that allows this? Thanks!
>
> Rick

There is only one way i can think of. First you have to take the 2
points, and their line connecting them, and dividing it up into n
segments where n is really big. Then, you can compute the endpoints of
each segment and make every n/oh say 50 lines wite (or the background
color). There is more math and a trickey algorithm to get down so it
will be scalable, but its really not that hard. There is no method in
any awt class that will make the style of the line dotted, unless you
create a border around a rectangle of 0 width and 0 padding, but it
would take about the same amount of code to implement.

Cheers.

Tr0mBoNe-, Sep 30, 2003
4. ### Sandip ChitaleGuest

Rick <rrquick@nospam-com> wrote in message news:<3f79818a\$>...
> Can someone please show me how to draw a dashed line between two points?
> Is there a method in the AWT library that allows this? Thanks!
>
> Rick

For reference:

public void drawDashedLine(Graphics g,int x1,int y1,int x2,int
y2,double dashlength,double spacelength){
double linelength=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
double yincrement=(y2-y1)/(linelength/(dashlength+spacelength));
double xincdashspace=(x2-x1)/(linelength/(dashlength+spacelength));
double yincdashspace=(y2-y1)/(linelength/(dashlength+spacelength));
double xincdash=(x2-x1)/(linelength/(dashlength));
double yincdash=(y2-y1)/(linelength/(dashlength));
int counter=0;
for(double i=0;i<linelength-dashlength;i+=dashlength+spacelength){
g.drawLine((int) (x1+xincdashspace*counter),(int)
(y1+yincdashspace*counter),
(int) (x1+xincdashspace*counter+xincdash),(int)
(y1+yincdashspace*counter+yincdash));
counter++;
}
if ((dashlength+spacelength)*counter<=linelength)
g.drawLine((int) (x1+xincdashspace*counter),(int)
(y1+yincdashspace*counter),x2,y2);
}

Sandip Chitale, Sep 30, 2003