When I did this, I used either a Line drawing algorith(draw by pixel), or draw by overlapping lines... for a double line:
g.Drawline(new Pen(7, black),pA,pB);
g.Drawline(new Pen(3, white),pA,pB);
results in a double line if you want it to be dashed...
g.Drawline(new Pen(7, black),pA,pB);
g.Drawline(new Pen(7, white),pA,pB-1x);
g.Drawline(new Pen(7, black),pA,pB-2x);
g.Drawline(new Pen(7, white),pA,pB-3x);
g.Drawline(new Pen(7, black),pA,pB-4x);
//cover up the "middle part"
g.Drawline(new Pen(3, white),pA,pB);
--O.k. I know it isn't "Real Code" but that should give you the idea...
I'd blame it on the Brain farts.. But lets be honest, it really is more like a Methane factory between my ears some days then it is anything else...