投稿者 とくま  (社会人) 投稿日時 2025/5/26 09:45:58
Public Class Form1
    'フォームが生きている限り使いまわす 
    Private penR As Pen
    Private penG As Pen
    Private penB As Pen

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        '初期処理 
        penR = New Pen(Color.Red, 2)
        penG = New Pen(Color.Green, 2)
        penB = New Pen(Color.Blue, 2)
    End Sub

    'TabPage の Paint イベント 
    Private Sub TabPage1_Paint(sender As Object, e As PaintEventArgs) Handles TabPage1.Paint
        'システムが裏で作成した e を利用 
        e.Graphics.DrawLine(penR, 10, 120, 50, 220)
        'オリジナル処理(自分で描画オブジェクト確保) 
        SenKaki_1()
    End Sub

    'オリジナル処理は関数内でリソースも解放しておく 
    Private Sub SenKaki_1()
        'TabPage1のGraphicsオブジェクトを作成 
        Dim g As Graphics = TabPage1.CreateGraphics()
        '画像を描画 
        g.DrawLine(penB, 60, 10, 20, 30)
        'Graphics破棄(メモリ解放) 
        g.Dispose()
    End Sub

    Private Sub Form1_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
        'ペンの破棄(メモリ解放) 
        penR.Dispose()
        penG.Dispose()
        penB.Dispose()
    End Sub
End Class