同じ長さの直線を何本も引くコードを書こうとしています。
今回は21本なのですが・・・。
Private Sub Button1_Click(By・・・EventArgs) Handles Button1.Click
Dim a, b As Integer
Dim d(20) As Graphics
For a = 0 To 20
b = 10 + 18 * (a - 1)
d(a).DrawLine(Pens.White, b, 30, b, 585)
a = a + 1
Next a
End Sub
End Class
このコードだと d(a).DrawLine(Pens.White, b, 30, b, 585)でエラーが
起きてしまいます。どのようにしたら良いのでしょうか?
宜しくお願い致します。
> Dim d(20) As Graphics
これは Graphics が入る入れ物を21個用意した…という意味です。
実際に使える Graphics の実体(インスタンス)は1つも用意されていません。
また、Graphics クラスは1つあれば破棄されるまで、何回でも
命令を実行できます。21個も用意する必要はありません。
あと、Graphics クラスを自分で作成した場合は、Dispose メソッドで
必ず破棄するようにしてください。
過去ログ検索『Graphics』で幾つかのサンプルコードが引っ掛かります。
調べて参考にしてください。
はじめまして。
Dim a, b As Integer
Dim d As Graphics = Me.CreateGraphics()
'↑描画先はフォーム?
For a = 0 To 20
b = 10 + 18 * (a - 1)
d.DrawLine(Pens.White, b, 30, b, 585)
'a = a + 1 ←ForNextの場合は不要?
Next a
d.Dispose()
こんな感じですか?
同じ長さの線を何本も書くのは縦も横も必要だったのですが、とりあえず書くことは出来ました。ご指導して下さった皆様ありがとうございました。
コードは次のようになりました。
Private Sub Button1_Click(ByVal・・・EventArgs) Handles Button1.Click
Dim a, b, f As Integer
Dim d As Graphics
d = PictureBox1.CreateGraphics
For a = 0 To 20
b = 50 + 28 * a '縦線の線と線の間隔
f = 30 + 27.8 * a '横線の線と線の間隔
d.DrawLine(Pens.White, b, 30, b, 585)
d.DrawLine(Pens.White, 50, f, 610, f)
Next a
d.FillEllipse(Brushes.White, 325, 304, 10, 10)
d.Dispose()
End Sub
End Class
ツイート | ![]() |