投稿者 るきお  (社会人) 投稿日時 2012/6/14 20:23:38
クラスのメソッドやプロパティの大多数はインスタンスに対して使用する必要があります。
インスタンスがない状態でメソッドやプロパティを使用するとNullReferenceExceptionが発生します。
たとえば、次の例ではStringクラスのインスタンスがない状態でLengthプロパティを使おうとしているのでNullReferenceExceptionが発生します。
Dim St As String
MsgBox(St.Length)


GraphicsクラスのDrawLineメソッドもそうです。
インスタンスをどのように取得するかの方法はさまざまです。よく見かけるのはNewを使用する方法ですが、今回はNewの出番はありません。

このあたりの事情は以下の記事で解説しているので参考にしてください。
初級講座第5回 メソッドと関数
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard5.htm

初級講座第9回 クラスの使い方
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard9.htm


今回の例を簡単に解決する例を紹介します。
この例はPictureBox1に対して描画を行う場合です。
Dim drawpen As Pen = Pens.Red
Dim ixx1 As Single = 10
Dim iyy1 As Single = 10
Dim ixx2 As Single = 100
Dim iyy2 As Single = 120

Dim g As Drawing.Graphics
g = PictureBox1.CreateGraphics
g.DrawLine(drawpen, ixx1, iyy1, ixx2, iyy2)


これでインスタンスの問題は解決しますが、グラフィックのセオリーからははずれています。
セオリーではPaintイベントで描画を実行することになっておりその場合は次のようにします。
Private Sub PictureBox1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    Dim drawpen As Pen = Pens.Red
    Dim ixx1 As Single = 10
    Dim iyy1 As Single = 10
    Dim ixx2 As Single = 100
    Dim iyy2 As Single = 120
    e.Graphics.DrawLine(drawpen, ixx1, iyy1, ixx2, iyy2)
End Sub