同じ長さの直線を何本か引くには?

解決


のりだぁ=  2007-04-18 03:54:51  No: 136114

同じ長さの直線を何本も引くコードを書こうとしています。
今回は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)でエラーが
起きてしまいます。どのようにしたら良いのでしょうか?
宜しくお願い致します。


特攻隊長まるるう  2007-04-18 04:30:58  No: 136115

>        Dim d(20) As Graphics
これは Graphics が入る入れ物を21個用意した…という意味です。
実際に使える Graphics の実体(インスタンス)は1つも用意されていません。

また、Graphics クラスは1つあれば破棄されるまで、何回でも
命令を実行できます。21個も用意する必要はありません。

あと、Graphics クラスを自分で作成した場合は、Dispose メソッドで
必ず破棄するようにしてください。

過去ログ検索『Graphics』で幾つかのサンプルコードが引っ掛かります。
調べて参考にしてください。


  2007-04-18 18:18:13  No: 136116

はじめまして。

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()

こんな感じですか?


のりだぁ=  2007-04-18 20:11:44  No: 136117

同じ長さの線を何本も書くのは縦も横も必要だったのですが、とりあえず書くことは出来ました。ご指導して下さった皆様ありがとうございました。
コードは次のようになりました。
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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加