Draw a dashed line

From CodeCodex

Revision as of 20:16, 21 February 2011 by 79.91.219.32 (Talk)

Implementations

Java

<highlightsyntax language="java122"> public void drawDashedLine(Graphics g,int x1,int y1,int x2,int y2,

                          double dashlength, double spacelength) {
 if((x1==x2)&&(y1==y2)) {
   g.drawLine(x1,y1,x2,y2);
   return;
   }
 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);

} </highlightsyntax>

Tcl

package require Tk
pack [canvas .can -width 300 -height 200]
.can create line 50 50 200 100 -dash {2 4}