Создание карты из спрайтов на основе массива после нажатия кнопки - Visual Basic .NET

Формулировка задачи:

VB 2015. С помощью нехитрых алгоритмов генерируется массив 40х40. За каждым значением закреплено определенное изображение 16х16 пикселей (допустим, что 0 - нет спрайта, 1 - есть спрайт). Необходимо эту совокупность всецело выводить в один-единственный элемент (предположительно PictureBox) по каждому нажатию клавиши без значительных задержек. Реализовывал это раньше через FlowLayoutPanel и 1600 отдельных PictureBox, но это сильно отжирает ресурсы компьютера при первоначальной отрисовке и не позволяет грамотно использовать скроллинг изображения внутри элемента-панели. Использую циклы, m как номер столбца, n на номер строки. P.S. С System.Drawing не дружу, ибо компилятор не любит, когда "e As EventArg" в другом сабе становится "e As PaintEventArg" (пишет, что невозможно привести к этому типу).

Код к задаче: «Создание карты из спрайтов на основе массива после нажатия кнопки - Visual Basic .NET»

textual
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Using g As Graphics = Panel1.CreateGraphics
            Dim img As Image = Image.FromFile("c:\01.png")
            Dim cell(1599) As Rectangle
            For i = 0 To cell.Length - 1
                cell(i) = New Rectangle
                With cell(i)
                    .Width = 16
                    .Height = 16
                    .X = (i Mod 40) * 16
                    .Y = (i \ 40) * 16
                End With
                g.DrawImage(img, cell(i).Location)
                'g.DrawRectangle(Pens.Black, cell(i))
            Next
        End Using
    End Sub

10   голосов, оценка 4.300 из 5


СОХРАНИТЬ ССЫЛКУ