0

ここ数週間、グリッドを持つビットマップを作成するプログラムに取り組んできました。画像を変更するたびに、次のように再作成します

    gridBMP = New Bitmap(gridColumns * boxWidth, gridRows * boxHeight)
    Dim g As Graphics = Graphics.FromImage(gridBMP)
    Dim p As New Pen(Color.FromArgb(255, 0, 0, 0)) ' Create a new pen, black
    Dim b As New SolidBrush(Color.FromArgb(255, 0, 0, 0)) ' Create a new solid brush, black

    Dim wallPen As New Pen(Color.FromArgb(255, 192, 192, 192)) ' Create a new pen, Grey

    Dim maxWidth As Integer = pb_grid.Width ' Get Max width
    Dim maxHeight As Integer = pb_grid.Height ' Get Max height

    g.Clear(Color.White) ' Make white background

    For i = 0 To gridColumns ' Draw Column lines
        Dim val As Integer = i * boxWidth
        g.DrawLine(wallPen, New Point(val, 0), New Point(val, maxHeight))
    Next

    For i = 0 To gridRows ' Draw Row lines
        Dim val As Integer = i * boxHeight
        g.DrawLine(wallPen, New Point(0, val), New Point(maxWidth, val))
    Next

    ' Draw borders at bottom and right
    g.DrawLine(wallPen, New Point(0, maxHeight), New Point(maxWidth, maxHeight))
    g.DrawLine(wallPen, New Point(maxWidth, 0), New Point(maxWidth, maxHeight))

    drawAll(g, p, b) ' Draw all objects

    pb_grid.Image = gridBMP

    ' Dispose of brush and pen
    p.Dispose()
    b.Dispose()

最後にご覧のとおり、ピクチャボックスの画像をビットマップとして設定しましたpb_grid.Image = gridBMP

しかし、これを行う簡単な方法はありますか?現在、毎回画像を再作成するのは非常に集中しているようで、画像を更新するのに 1 ~ 2 秒かかるため、これは望ましくありません。フォームで可能な限り瞬時に近い状態にしたいのですが、方法がわかりません。画像全体を再作成することなく、グリッドの幅を「増やす」には時間がかかります。

バックグラウンドワーカーを試してみましたが、とにかく画像に時間がかかるため、実際には違いはありません.

どんな考えや提案も大歓迎です!

ありがとう

4

0 に答える 0