I need to display a graph with thousands of nodes so that the user can scroll and zoom to view it. The nodes need to behave like dimensionless points, and the edges, like one-dimensional lines. That is, zooming in, the circles representing the nodes move farther apart but each one stays the same size, and the lines connecting them get longer but not thicker. Zooming should be "continuous" and "infinite", if possible.

What APIs and algorithms are used to solve this problem?
(as in, say, CAD or GIS applications)

I couldn't get anywhere near acceptable performance using GDI+. My implementation was probably naive, but, still, I'm guessing I need OpenGL or DirectX.