No you are not correct. What is the point of the Using block? It's to Dispose the object whose scope it defines. That second code snippet not only doesn't Dispose the Pen, it doesn't keep a reference to it so it couldn't Dispose it even if it wanted to.

What's more, which I didn't notice at first, your're calling Graphics.FromImage to create a Graphics object and you're not Disposing that either, so your resource leak is even worse. You MUST Dispose every object that supports it when you are done with it. You should be using two Using blocks: one for the Pen and one for the Graphics:
vb.net Code:
  1. Using MyPen As New Pen(Color.FromArgb(Red , Green, Blue), ws)
  2.     Using g = Graphics.FromImage(bmp)
  3.         g.DrawLine(MyPen, p1, p2)
  4.     End Using
  5. End Using