I'd agree with using xna in a manner similar to the winforms sample.
I think you might get the best appearance and performance for the lines not by rendering a bitmap or using the SpriteBatch but by creating a dynamic vertex buffer to contain all the endpoints of all the lines. Then use the DrawUserPrimitives() and specify the primitiveType param to be PrimitiveType.LineList.
This sends all those points to the GPU where you can create all kinds of effects (shaders) on the lines while the GPU does all the heavy lifting.
Some of the samples in the educational section of the app hub use this kind of rendering to make grids. One that comes to mind is the perPixelLighting sample. You may (or may not) need to to work somewhat in 3d space.